2013-07-04 6 views
5

Wie definiere ich eine ID zu einem Layout?Android ID zu einem Layout hinzufügen

Ich versuche, eine ID zu einem Linearlayout und die Einrichtung eines Onclick Zuhörer hinzuzufügen:

XML:

<LinearLayout 
    android:id="@+id/?????????" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:onClick="btnHandler" > 
</LinearLayout> 

Klasse:

public class MainActivity extends Activity { 
    //.... 

    public void btnHandler(View v){ 
     switch(v) 
     { 
      case R.id.????? : 
     } 
    } 
} 
+0

Ich denke, dass die ID hier nicht Ihr Problem ist, haben Sie tu setze das Layout 'android: clickable = true' weil du schon addi bist ng die ID, nicht wahr? – zozelfelfo

Antwort

7

Da haben Sie diese

<LinearLayout 
android:id="@+id/linearlayout" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:onClick="btnHandler" > 
</LinearLayout> 

Sie tun können, wie unten

public void btnHandler(View v) 
    { 
     switch(v.getId()) // use v.getId() 
    { 
     case R.id.linearlayout : 
     break; // also don't forget the break; 
    } 

    } 

Edit:

Wenn Sie Taste, dann können Sie tun, wie unten.

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/linearlayout" 
    android:onClick="clickEvent" 
    android:orientation="vertical" > 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/bt1" 
    android:text="button" 
    android:onClick="clickEvent" 
    /> 

</LinearLayout> 

Dann in Ihrer Tätigkeit

public void clickEvent(View v) 
{ 
     switch(v.getId()) 
     { 
      case R.id.linearlayout : 
       Log.i("......"," linear layout clicked"); 
      break; 
      case R.id.bt1 : 
     Log.i("......"," button clicked"); 
      break; 
     } 
} 
+0

Ich möchte einen OnClickListener zum Layout und nicht zu einer Schaltfläche hinzufügen. –

+0

@ZbarceaChristian sorry verwechselt. – Raghunandan

+0

@ZbarceaChristian überprüfen Sie die Bearbeitung auch. – Raghunandan

2

Der einfachste Weg, nur würde hinzufügen es in Ihrem Layout xml:

<LinearLayout 
    android:id="@+id/myId" <!-- the part where the id is being created --> 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:onClick="btnHandler" > 
</LinearLayout> 

Es kann dann von Ihrem Code über your.package.R.id.myId referenziert werden.

1
<LinearLayout 
    android:id="@+id/lineaLayoutId" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:onClick="btnHandler" > 
</LinearLayout> 
public class MainActivity extends Activity { 
    //.... 

    public void btnHandler(View v){ 
     switch(v) 
     { 
      case R.id.lineaLayoutId : 
      break; 
     } 
    } 
} 
0

In onCreate() Ihrer Aktivität:

findViewById(R.id.?????????).setOnClickListener(this); 

und haben Ihre Aktivität View.OnClickListener implementieren.

@Override 
public void onClick(View view) { 
    if(view.getId() == R.id.?????????) { 
     //your code for on click 
    } 
} 
3

Statt

switch(v) 

Verwendung

switch(v.getId()) 

und stellen Sie Ihre ID aus der XML-

android:id="@+id/idValue" 
+0

Guter Fang, mein Freund. Obwohl es für diejenigen, die wissen warum, ziemlich offensichtlich ist, könnten Sie vielleicht eine kurze Erklärung hinzufügen, was es tut ... – codeMagic

Verwandte Themen