掌握一个字符串变量

问题描述:

我试图让这个代码字符串数组资源字符串数组资源:掌握一个字符串变量

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为指定的资源。

+0

非常感谢你,它看起来像我需要的,我会尝试它,并让你知道 – Vilrouge 2012-02-11 18:35:58

+0

这个答案帮了我很多,谢谢 – Vilrouge 2012-02-11 19:30:56

你可以创建一个包含String变量 “R.array。”并附上您的continent对象。

+0

感谢您的回答 – Vilrouge 2012-02-11 17:43:30

+0

但我大陆的对象是一个字符串,把R.array.europe作为字符串不会做......我需要能够从字符串获取资源... – Vilrouge 2012-02-11 17:44:37

+0

我不知道我明白你在说什么。从你在你的问题中所说的话,这听起来像大陆是动态的,所以你想拉大陆的基础上的字符串资源。所以如果你添加“R.array”。无论选择哪个大洲,都应该获得“R.array.selectedContinent”作为结果。 – bschultz 2012-02-11 17:49:00

我有同样的问题。 使用

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);