小编Ric*_*hal的帖子

通过Id(int)更轻松地获取视图的Id(字符串)

我是android和java的新手,很抱歉,如果这是一个太基本的问题,但我试图在论坛和谷歌找到一个解决方案,我不能.

我的布局中有24个按钮,所有这些按钮都做类似的事情,所以我想创建一个通用的功能.但首先我需要知道他按钮的名称(xml id).

这个按钮的XML代码:

  <Button
      android:id="@+id/add_04"
      android:layout_width="42dp"
      android:layout_height="wrap_content"
      android:layout_gravity="center"
      android:layout_marginLeft="15dp"
      android:background="@xml/zbuttonshape"
      android:onClick="onClick"
      android:text="@string/mas" />
Run Code Online (Sandbox Code Playgroud)

我为所有按钮设置了android:onClick ="onClick".

在我的活动中,我在onClick上创建了一个新函数:

这是我试过的代码:

public void onClick(View v) {
        String name = v.getContext().getString(v.getId());
        String name2 = context.getString(v.getId());
        String name3 = getString(v.getId());
        String name4 = getResources().getString(v.getId()); 
}
Run Code Online (Sandbox Code Playgroud)

但是当我试图获得名称(在这种情况下是"add_04")时,我总是得到"假".

最后,我找到了一个包含以下代码的解决方案:

import java.lang.reflect.Field;

String name5 = null;
Field[] campos = R.id.class.getFields();
for(Field f:campos){
     try{
        if(v.getId()==f.getInt(null)){
            name5 = f.getName();
            break;
        }
       }
       catch(Exception e){
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,是否有更简单的方法来获取此ID?

提前致谢.

android

51
推荐指数
6
解决办法
8万
查看次数

标签 统计

android ×1