【问题标题】:Get an integer array from an xml resource in Android program从 Android 程序中的 xml 资源中获取整数数组
【发布时间】:2011-01-05 02:17:22
【问题描述】:

只是匆匆忙忙,

我在 res/values/integers.xml 中有一个 xml 资源

<?xml version="1.0" encoding="utf-8"?>
<resources>
     <integer-array name="UserBases">
          <item>2</item>
          <item>8</item>
          <item>10</item>
          <item>16</item>
     </integer-array>
</resources>

我尝试了几种方法来访问它:

int[] bases = R.array.UserBases;

这只是返回和 int 引用 UserBases 而不是数组本身

int[] bases = Resources.getSystem().getIntArray(R.array.UserBases);

这会向我抛出一个异常,告诉我 int 引用 R.array.UserBases 没有指向任何内容

访问该数组的最佳方式是什么,将其推送到一个不错的基本类型 int[] 中,然后可能会将任何修改推送回 xml 资源中。

我已经检查了 android 文档,但没有发现任何非常有成效的东西。

【问题讨论】:

    标签: java android


    【解决方案1】:

    需要使用Resources来获取int数组;但是,您正在使用系统资源,其中仅包括标准 Android 资源(例如,可通过 android.R.array.* 访问的资源)。要获取您自己的资源,您需要通过您的上下文之一访问资源。

    例如,所有的活动都是上下文,所以在一个活动中你可以这样做:

    Resources r = getResources();
    int[] bases = r.getIntArray(R.array.UserBases);
    

    这就是为什么传递上下文通常很有用;您将需要它来获取应用程序的资源。

    【讨论】:

    • 酷豆!非常感谢。还有什么是从数组中添加和删除项目的最佳方法(保存编辑原始 xml) - 基本上更新从 int[] 到 xml 的任何更改。
    • 我不确定是否可以从代码更新 xml;构建 apk 时,所有资源 xml 都会编译成二进制文件。你应该对它提出一个新问题,也许其他人知道。
    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多