掌握一个字符串变量
我试图让这个代码字符串数组资源字符串数组资源:掌握一个字符串变量
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部分虽然...
随着代码中动态创建的资源的名称,你可以看看使用
getResources().getIdentifier(String name, String defType, String defPackage);
这将返回一个id为指定的资源。
你可以创建一个包含String
变量 “R.array。”并附上您的continent
对象。
我有同样的问题。 使用
getResources()则getIdentifier(字符串名称,字符串DEFTYPE,字符串defPackage)。
与
名:应该是文件中的资源名称。 (避免添加R.array在资源名称的开头,因为没有与名称R.array.yourname没有资源。) DEFTYPE:应该是“数组”。 defPackage:
的问题已经解决了
这里this.getPackageName()是,我发现很容易使用另一种方法:
int resourceId = R.array.class.getField(yourStringVariable).getInt(null);
String[] yourStringArray = getResources().getStringArray(resourceId);
注意yourStringVariable是形式为“欧洲”,而不是“R.array.europe”。
您可以使用此获得数组资源ID:
Sting name = "resource_array_name";
int resourceId= getResources().getIdentifier(name, "array",this.getPackageName());
String[] items = getResources().getStringArray(resourceId);
非常感谢你,它看起来像我需要的,我会尝试它,并让你知道 – Vilrouge 2012-02-11 18:35:58
这个答案帮了我很多,谢谢 – Vilrouge 2012-02-11 19:30:56