在onClick事件中获取视图的id作为String

lor*_*ess 4 xml android view onclick

嗨我试图获取ID我设置在每个这些线性布局,但我得到了

android.widget.LinearLayout@41032a40或类似的对我来说没什么用处.

我已将id设置为row1,这就是我想要返回的内容.

我确定我以前做过类似的事情,所以我无法弄清楚为什么它会返回上面的内容.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<LinearLayout
    android:id="@+id/row1"
    android:layout_width="fill_parent"
    android:layout_height="30dip"
    android:background="@android:color/black"
    android:onClick="xmlClickHandler" />

<LinearLayout
    android:id="@+id/row2"
    android:layout_width="fill_parent"
    android:layout_height="30dip"
    android:background="@android:color/white"
    android:onClick="xmlClickHandler" />

<LinearLayout
    android:id="@+id/row3"
    android:layout_width="fill_parent"
    android:layout_height="30dip"
    android:background="@android:color/black" 
    android:onClick="xmlClickHandler" />

<LinearLayout
    android:id="@+id/row4"
    android:layout_width="fill_parent"
    android:layout_height="30dip"
    android:background="@color/white" 
    android:onClick="xmlClickHandler" />

<LinearLayout
    android:id="@+id/row5"
    android:layout_width="fill_parent"
    android:layout_height="30dip"
    android:background="@color/yellow" 
    android:onClick="xmlClickHandler" />
 <LinearLayout
    android:id="@+id/row6"
    android:layout_width="fill_parent"
    android:layout_height="30dip"
    android:background="@color/blue"
    android:onClick="xmlClickHandler" />
Run Code Online (Sandbox Code Playgroud)

        public void xmlClickHandler(View v) {
    Log.d("CLICK ROW", String.valueOf(v));
}
Run Code Online (Sandbox Code Playgroud)

Nar*_*ngh 14

可以使用v.getID()检查视图ID

你可以简单地检查一下

   if(v.getId()==R.id.row1)
Run Code Online (Sandbox Code Playgroud)

并相应地执行您想要的任务.


小智 9

你可以这样做:

public void xmlClickHandler(View v) {
    String viewID = getResources().getResourceName(v.getId());
}
Run Code Online (Sandbox Code Playgroud)

而且你必须解析结果字符串.


Joe*_*oeJ 6

尝试设置android:tag="row1"并使用Log.d("CLICK ROW", String.valueOf(v.getTag()));打印ID.