Android动态获取TypedArray

时间:2015-12-09 17:58:05

标签: java android

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="level_2">
        <item name="first">some value</item>
        <item name="second">some value</item>
        <item name="third">some value</item>
    </array>
</resources>

-

int currentLevel = 2;        
TypedArray testArray = getResources().obtainTypedArray(R.array.level_2);
int firstValue = testArray.getInt(0,0);

我试图根据某些数据动态设置要使用的资源(数组)。例如,我有像上面那样的每个级别的数组。我没有在R.array.level_2中使用资源ID obtainTypedArray(),而是希望在上面的示例中使用int currentLevel的值。

所以,做某些事情的方式如下: obtainTypedArray("R.array.level_"+level)

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

你应该使用Context.getResources().getIdentifier();方法,如下所示,可以通过getStrArrWithId("level_" + level, getApplicationContext());

在任何活动中调用
public String [] getStrArrWithId (String id, Context context) {
    int arrId = context.getResources().getIdentifier(id, "array", context.getPackageName());
    String[] strArr = context.getResources().getStringArray(arrId);
    return strArr;
}