2011-10-23 17 views
1

イメージボタン名のセットを指定するxmlファイルがあります。また、私は以下に示すようにXMLノードの属性として画像リソースIDを指定したいと思います:個別のxmlでdrawableリソースIDを指定する

<button name="close" resLocation="R.drawable.close" /> 

私はコードでXMLを解析しています、私は動的に作成するための画像の背景を設定したいと思いますボタンをクリックします。 resLocationは文字列なので、Drawableオブジェクトに直接変換することはできません。回避策がありますか?

答えて

1

を試すことができます。

String myResourceId = "close"; // Parsed from XML in your case 
getResources().getIdentifier(myResourceId, "drawable", "com.my.package.name"); 

これは少し異なるように、あなたのXMLが必要になります。

<button name="close" resLocation="close" /> 

あなたがXMLでR.type.id形式を維持する必要がある場合は、あなただけのタイプとIDを解析する必要があるでしょう:

String myResourceId = "R.drawable.close"; 
String[] resourceParts = myResourceId.split("\\."); 
getResources().getIdentifier(resourceParts[2], resourceParts[1], "com.my.package.name"); 
0

あなたは

<button name="close" resLocation="@drawable/close" /> 

を試すか、あなたはgetResources().getIdentifierを取得使用することができます

ImageButton imgButton=new ImageButton(this); 

imgButton.setImageResource(getResources().getDrawable(R.drawable.close)); 
+0

リソース識別子がされているので、これは動作しませんXMLファイル(レイアウトファイルではない)から読み込まれ、文字列としてのみ使用できます。 – goto10

+0

ご迷惑をおかけして申し訳ございません。あなたは参照できます。[リンク] http://stackoverflow.com/questions/4427608/android-getting-resource-id-from-string [/ link] –

+1

あなたは反射を使用できますが、 getIdentifier'はそれを行うためのより明確な方法であり、APIによって提供されるため、文字列からリソースを取得するための認可されたメソッドです。そのリンクの答えには、著者が答えた時点でgetIdentifierを認識していないという編集も含まれています。 – goto10

関連する問題