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

时间:2013-04-25 18:01:25

标签: android xml 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" />

        public void xmlClickHandler(View v) {
    Log.d("CLICK ROW", String.valueOf(v));
}

7 个答案:

答案 0 :(得分:14)

可以使用v.getID()

检查视图ID

您可以简单地检查为

   if(v.getId()==R.id.row1)

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

答案 1 :(得分:9)

你可以这样做:

public void xmlClickHandler(View v) {
    String viewID = getResources().getResourceName(v.getId());
}

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

答案 2 :(得分:5)

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

答案 3 :(得分:2)

使用v.getId()来获取ID

答案 4 :(得分:1)

Log.d("CLICK ROW", String.valueOf(v.getId()));

v是View类的一个实例,您可以使用getId()方法获取View的ID。

答案 5 :(得分:1)

简单解决方案,仅是一行代码。它可以从视图中获取任何ID。

String id=id=getResources().getResourceEntryName(view.getId());

答案 6 :(得分:0)

我刚刚看到另一个问题,显然你不能将id作为字符串返回。