我有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”。
在我的练习中,我创建了一个新函数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();
}
}
有没有更简单的办法弄到这个身份证?
9条答案
按热度按时间aurhwmvo1#
像这样:
我在视图构造函数中使用它来生成更有意义的TAG
3yhwsihp2#
这种方法一开始就被误导了。如果你想把一个任意的数据(比如字符串)和一个视图关联起来,那就是
tag
的作用。ID是数字的,最好保持这种状态。不过要注意的是,在Android中标签不是唯一的,注意同一个视图树中的标签冲突。稍后编辑:OP的问题是一个XY problem的例子。也就是说,问题标题 * 单独 * 本身就是一个合法的问题。
brqmpdu13#
编辑:
你必须使用
第一个月
如果要检索与resId关联的条目名称
或
可以使用
getIdentifier()
检索给定资源名称的资源标识符。例如:
pkmbmrz74#
您可以检查每个按钮的ID,这样的方式:
6g8kf2rb5#
您将获得Result ;电视
qxsslcnc6#
您可以将此toString()放入Android View中,它将返回字符串资源ID。
hfyxw5xn7#
Kotlin版本(来自@gadget)作为视图扩展名:
cygmwpex8#
这是一个迟来的答案,但可能会有用的人寻找一种方法来获得任何视图/ drawable / String编程的资源id(int)。
图像来自resd/drawable
基于资源名称的视图
弦
kadbb4599#
@群众之王的回答很棒,以下是我在Kotlin的回答:
来自res/drawable的图像
基于资源名称的视图
字符串
布局