使用字符串变量获取字符串Array资源

时间:2012-02-11 17:31:00

标签: android

我正在尝试使用以下代码获取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部分......

5 个答案:

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