首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android R.integer创建数组返回超大错误值导致内存溢出

android R.integer创建数组返回超大错误值导致内存溢出
EN

Stack Overflow用户
提问于 2012-11-18 22:10:51
回答 3查看 2.1K关注 0票数 4

我在xml中声明了几个整数值,需要使用Class中的值来定义对象的数组大小。

代码语言:javascript
复制
<?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>

我在我的类中使用上面的值,如下所示

代码语言:javascript
复制
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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-18 22:17:44

R.integer.item1是资源的ID,因此是一个非常大的任意整数。

您要查找的值是getContext().getResources().getInteger(R.integer.item1);

因此,您将无法在静态代码中获取它们。

你应该在你的代码中使用延迟初始化:

代码语言:javascript
复制
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;
}
票数 13
EN

Stack Overflow用户

发布于 2012-11-18 22:14:08

如下所示:

代码语言:javascript
复制
Resources res = getResources();
int maxSpeed = res.getInteger(R.integer.max_speed);

查看此处:http://developer.android.com/guide/topics/resources/more-resources.html#Integer

票数 2
EN

Stack Overflow用户

发布于 2012-11-18 22:19:12

原因是,任何R.integer.*都是一个生成的整数值,它就像一个id,它与您在xml中声明的值相关

你应该打电话给

代码语言:javascript
复制
getResources().getInteger(R.integer.*);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13440937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档