2012-03-30 3 views
2

今日は面白い問題に直面しました。私は4つの文字列をランダムに表示する必要があります。だから私は単純に文字列を私のstring.xmlに追加し、テキストを表示するようにテキストビューを設定していました。Androidでリフレクションを使用する

textView.setText(R.string.text_1);

又は(乱数2である場合)

textView.setText(R.string.text_2)。

ので、私はそう今field.get(ヌル)が、実際にID(16進数を返す反射

Class c = Class.forName("com.startpage.mobile.R$string");

Field field = c.getDeclaredField("text_"+num); //num is 1/2/3/4 System.out.println("**** "+field.get(null));

を使用してみましたが、変更はちょうど最後の文字であることを観察しましたR.java)の値ではなく、文字列の値として期待しています。

リフレクションを使用して文字列の実際の値を取得する方法はありますか?これはAndroidと一緒に暮らす必要がありますか?

答えて

1
getResources.getString(resourceId); 
+1

素晴らしい。これは(System.out.printlnはをworked- "**********" + getResources()。getString((Integer)field.get(null))); – Kamal

0

私はいつも進数を返しますあなたは文字列の配列を使用することをお勧めし、それから

2
R.string.text_2 

をランダムにアイテムを選択してください。実際に文字列値を取得するには、あなたは、単にリソースマネージャからあなたのリソースIDを要求することができ、次の

MyActivity.this.getResources.getString(R.string.text_2); 
0

を試してみて:

Class c = Class.forName("com.startpage.mobile.R$string"); 
Field field = c.getDeclaredField("text_" + num); 
int resId = (int)field.get(null); 
String text = this.getResources().getString(resId); 
textView.setText(text); 
関連する問題