我是 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" />
我为所有按钮设置了 android:onClick="onClick"。
在我的 Activity 中,我创建了一个新函数 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());
}
但是当我尝试获取名称时(在本例中为“add_04”),我总是得到“false”。
最后我找到了一个解决方案,代码如下:
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();
}
}
我的问题是是否有更简单的方法来获取此 ID?
提前致谢。
最佳答案
像这样:
/**
* @return "[package]:id/[xml-id]"
* where [package] is your package and [xml-id] is id of view
* or "no-id" if there is no id
*/
public static String getId(View view) {
if (view.getId() == View.NO_ID) return "no-id";
else return view.getResources().getResourceName(view.getId());
}
我在 View 构造函数中使用它来制作更有意义的标签
关于android - 通过 Id (int) 获取 View Id (string) 的更简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14647810/