我目前遇到问题,是否可以使用" findViewById()
"像这样?
String[] names{ "a", "b"};
findViewById(R.drawable.names[0]);
答案 0 :(得分:3)
编辑:您知道,您只能在findViewById
类型上致电R.id
。因此,您的代码必然会失败,因为您在R.drawable
类型上调用它。
试试getIdentifier()
。 Documentation
int resourceId = getResources().getIdentifier(names[0], "drawable", getPackageName());
findViewById(resourceId);
注意:Android文档说:
不鼓励使用此功能。它效率更高 按标识符而不是按名称检索资源。
在这种情况下,如果您定义了一个int
数组,并且那些包含drawable
资源的ID,则可能会更好。
答案 1 :(得分:1)
否你不能这样做,但是有一个解决方法。尝试这样的事情: -
String[] names{ "a", "b"};
int drawableId = this.getResources().getIdentifier(names[0], "drawable", this.getPackageName());
findViewById(drawableId);
其中this
是一项活动,只是为了澄清。
如果您想要 strings.xml 中的String
或UI元素的identifier
,请替换“drawable”
int resourceId = this.getResources().getIdentifier("nameOfResource", "id", this.getPackageName());
我必须警告你,这种获取标识符的方式非常慢,只在需要的地方使用。
答案 2 :(得分:0)
findViewById()接受int而不是字符串。所以你可以使用像..
int[] txtViewIdsform1;
txtViewIdsform1 = new int[] { R.drawable.txt_phone1, R.drawable.txt_phone2,
R.drawable.txt_fax, R.drawable.txt_contact_name, R.drawable.txt_contact_ph};
答案 3 :(得分:0)
不能做到这一点
你可以像
那样做int[] ids={R.drawable.a,R.drawable.b};
findViewById(ids[0]);