如何在Android中使用dynamicstring名称来访问string(类似于javascript中的eval)?

我试图访问stringvariables使用dynamic名称取决于我的画廊是在什么位置。 要使用固定名称获取string的值,请使用以下代码(该string称为pic1info):

String strTest = getResources().getString(R.string.pic1info); 

我的string被命名为pic1info,pic2info,pic3info等,我想要replacepic1info的静态定义,以包括位置,所以传递以下string的内容代替上面的pic1info,以便根据当前位置返回一个不同的string:

 String strDynamicStringName= "pic" + position + "info"; 

在JavaScript中相当于eval,我相信有一个简单的方法来做到这一点,但我不能解决如何!

非常感谢您的帮助!

戴夫

Solutions Collecting From Web of "如何在Android中使用dynamicstring名称来访问string(类似于javascript中的eval)?"

不,在Java中没有简单的方法,但是可以创build一个ints数组,其中每个索引都表示该string的R值。

 private static final int[] LOOKUP_TABLE = new int[] { R.string.pic1info, R.string.pic2info, R.string.pic3info, R.string.pic4info }; 

得到一个string然后会变成:

 String strTest = getResources().getString(LOOKUP_TABLE[position]); 

使用这个: android.content.res.Resources.getIdentifier

 int resID = getResources().getIdentifier("pic" + position + "info", "string", getPackageName()); String strTest = getResources().getString(resID); 

受Kaj的回答启发,你也可以在你的XML文件中放入一个String数组 :

 <resources> <string-array name="picInfos"> <item>value of pic1info goes here</item> <item>value of pic2info goes here</item> <item>value of pic3info goes here</item> </string-array> </resources>