2

我目前面临一个问题,是否可以findViewById()像这样使用“”功能?

String[] names{ "a", "b"};
findViewById(R.drawable.names[0]);
4

4 回答 4

3

编辑:你知道,你只能调用findViewById类型R.id。因此,您的代码必然会失败,因为您在R.drawable类型上调用它。

试试getIdentifier()文档

int resourceId = getResources().getIdentifier(names[0], "drawable", getPackageName());
findViewById(resourceId);

注意:Android 文档说:

不鼓励使用此功能。按标识符检索资源比按名称检索资源效率更高。

在这种情况下,如果您定义一个数组int,并且其中包含drawable资源的 id,可能会更好。

于 2013-03-19T07:14:35.563 回答
1

,您不能这样做,但是可以解决此问题。尝试这样的事情: -

String[] names{ "a", "b"};
int drawableId = this.getResources().getIdentifier(names[0], "drawable", this.getPackageName());
findViewById(drawableId);

Activity在哪里this,写出来只是为了澄清。

如果您想要一个Stringin strings.xmlidentifier一个 UI 元素,请替换“drawable”

int resourceId = this.getResources().getIdentifier("nameOfResource", "id", this.getPackageName());

我必须警告你,这种获取标识符的方式真的很慢,只在需要的地方使用。

于 2013-03-19T07:15:18.390 回答
0

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};
于 2013-03-19T07:15:58.483 回答
0

不,这不能做

你可以用其他方式来做,比如

int[] ids={R.drawable.a,R.drawable.b};
findViewById(ids[0]);
于 2013-03-19T07:16:33.617 回答