私は現在問題に直面しています。関数 " 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
の ID が含まれていた方がよいでしょう。drawable
いいえ、それはできませんが、代わりに回避策があります。このようなことを試してください:-
String[] names{ "a", "b"};
int drawableId = this.getResources().getIdentifier(names[0], "drawable", this.getPackageName());
findViewById(drawableId);
this
明確にするために書かれたアクティビティはどこにありますか。
string.xmlまたはUI 要素String
のが必要な場合は、「drawable」に置き換えます。identifier
int resourceId = this.getResources().getIdentifier("nameOfResource", "id", this.getPackageName());
警告する必要があります。この方法で識別子を取得するのは非常に時間がかかります。必要な場合にのみ使用してください。
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};
いいえ、これはできません
あなたは他の方法でそれを行うことができます
int[] ids={R.drawable.a,R.drawable.b};
findViewById(ids[0]);