我目前面临一个问题,是否可以findViewById()
像这样使用“”功能?
String[] names{ "a", "b"};
findViewById(R.drawable.names[0]);
我目前面临一个问题,是否可以findViewById()
像这样使用“”功能?
String[] names{ "a", "b"};
findViewById(R.drawable.names[0]);
编辑:你知道,你只能调用findViewById
类型R.id
。因此,您的代码必然会失败,因为您在R.drawable
类型上调用它。
试试getIdentifier()
。文档
int resourceId = getResources().getIdentifier(names[0], "drawable", getPackageName());
findViewById(resourceId);
注意:Android 文档说:
不鼓励使用此功能。按标识符检索资源比按名称检索资源效率更高。
在这种情况下,如果您定义一个数组int
,并且其中包含drawable
资源的 id,可能会更好。
不,您不能这样做,但是可以解决此问题。尝试这样的事情: -
String[] names{ "a", "b"};
int drawableId = this.getResources().getIdentifier(names[0], "drawable", this.getPackageName());
findViewById(drawableId);
Activity在哪里this
,写出来只是为了澄清。
如果您想要一个String
in strings.xml或identifier
一个 UI 元素,请替换“drawable”
int resourceId = this.getResources().getIdentifier("nameOfResource", "id", this.getPackageName());
我必须警告你,这种获取标识符的方式真的很慢,只在需要的地方使用。
findViewById() 接受 int 而不是字符串。所以你可以使用like..
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};
不,这不能做
你可以用其他方式来做,比如
int[] ids={R.drawable.a,R.drawable.b};
findViewById(ids[0]);