Ans*_*hul 4 android largenumber out-of-memory android-resources
我在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>
Run Code Online (Sandbox Code Playgroud)
我在课堂上使用上面的值如下
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];
}
Run Code Online (Sandbox Code Playgroud)
对于1,2,3项,我预计ITEM*_COUNT分别为3,1,1.但是我分别得到2131034112,2131034113,2131034114
这有什么不对?
正在使用Android 2.2 [API-8]
Ora*_*bîg 11
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1874 次 |
| 最近记录: |