我目前面臨一個問題,是否可以使用這樣的功能「findViewById()
」?findViewById函數使用字符串變量
String[] names{ "a", "b"};
findViewById(R.drawable.names[0]);
我目前面臨一個問題,是否可以使用這樣的功能「findViewById()
」?findViewById函數使用字符串變量
String[] names{ "a", "b"};
findViewById(R.drawable.names[0]);
編輯:只要你知道,你只能叫findViewById
上R.id
類型。因此,您的代碼必然會失敗,因爲您在R.drawable
類型中調用它。
嘗試getIdentifier()
。 Documentation
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);
凡this
是一種活動,寫只是爲了澄清。
如果你想有一個String
在的strings.xml或UI元素的identifier
,替代「繪製」
int resourceId = this.getResources().getIdentifier("nameOfResource", "id", this.getPackageName());
我必須警告你,獲得標識的這種方式實在是太慢了,只在需要的地方使用。
我不認爲你的答案是錯誤的或不相關的。所以我會中立downvote。 – 2013-03-19 07:19:56
findViewById()accept int not string。所以,你可以像使用..
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]);
沒有,findViewById()接受INT(查看ID)爲參數。 – SKK 2013-03-19 07:13:36
'findViewById'和'R.drawable'?似乎合法.. – 2013-03-19 07:20:10