我在xml中声明了几个整数值,需要使用Class中的值来定义对象的数组大小。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- Default Object Count -->
<item format="integer" name="item1" type="integer">3</item>
<item format="integer" name="item2" type="integer">1</item>
<item format="integer" name="item3" type="integer">1</item>
</resources>我在我的类中使用上面的值,如下所示
public class InitialiseObjects {
// For now static number of objects initialized
private String TAG = "INIT_OBJECTS";
int ITEM1_COUNT = R.integer.item1;
int ITEM2_COUNT = R.integer.item2;
int ITEM3_COUNT = R.integer.item3;
private Item1[] item1Objs = new Item1[ITEM1_COUNT];
private Item2[] item2Objs = new Item2[ITEM2_COUNT];
private Item3[] item3Objs = new Item3[ITEM3_COUNT];
}我期望项目1、2、3的ITEM*_COUNT分别为3、1、1。但我得到的分别是2131034112、2131034113、2131034114
这是怎么回事?
正在使用Android 2.2 API-8
发布于 2012-11-18 22:17:44
R.integer.item1是资源的ID,因此是一个非常大的任意整数。
您要查找的值是getContext().getResources().getInteger(R.integer.item1);
因此,您将无法在静态代码中获取它们。
你应该在你的代码中使用延迟初始化:
private Item1[] item1Objs;
public Item1[] getItem1Array(Context context) {
if (item1Objs == null) {
int count = context.getResources().getInteger(R.integer.item1);
item1Objs = new Item1[count];
}
return item1Objs;
}发布于 2012-11-18 22:14:08
如下所示:
Resources res = getResources();
int maxSpeed = res.getInteger(R.integer.max_speed);查看此处:http://developer.android.com/guide/topics/resources/more-resources.html#Integer
发布于 2012-11-18 22:19:12
原因是,任何R.integer.*都是一个生成的整数值,它就像一个id,它与您在xml中声明的值相关
你应该打电话给
getResources().getInteger(R.integer.*);https://stackoverflow.com/questions/13440937
复制相似问题