我正在尝试使用以下代码获取stringArray资源:
String continent = "europe";
getResources().getStringArray(R.array.continent);
如果我键入R.array.europe,它确定,但我希望它是动态的,所以我正在寻找一种在这里使用我的字符串变量的方法..
这可能是一个简单的java问题,但我在java和android编程中都是一个菜鸟,我找不到答案..
提前致谢;
编辑:所以这是我完整的onCreate方法,我做错了吗?
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
String continent = (String) getIntent().getExtras().getString("continent");
int holderint = getResources().getIdentifier(continent, "Array",
this.getPackageName());
String[] items = getResources().getStringArray(holderint);
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
items));
}
虽然我不确定defPackage部分......
答案 0 :(得分:2)
使用代码中动态创建的资源名称,您可以查看使用
getResources().getIdentifier(String name, String defType, String defPackage);
这将返回指定资源的id。
答案 1 :(得分:1)
您可以创建一个包含&#34; R.array的String
变量。&#34;并将其与continent
对象一起附加。
答案 2 :(得分:0)
我遇到了同样的问题。 使用
getResources()。getIdentifier(String name,String defType,String defPackage);
与
名称:应该是文件中的资源名称。 (避免在资源名称的开头添加R.array。因为没有名称为R.array.yourname的资源) deftype :应该是“数组”。 defPackage :this.getPackageName()
问题已经解决
答案 3 :(得分:0)
这是一种我觉得易于使用的替代方法:
int resourceId = R.array.class.getField(yourStringVariable).getInt(null);
String[] yourStringArray = getResources().getStringArray(resourceId);
请注意,yourStringVariable的格式为“europe”,而不是“R.array.europe”。
答案 4 :(得分:0)
您可以使用以下方法获取阵列资源ID:
Sting name = "resource_array_name";
int resourceId= getResources().getIdentifier(name, "array",this.getPackageName());
String[] items = getResources().getStringArray(resourceId);