【问题标题】:how do I save a stringarray assigned in string.xml?如何在 string.xml 中保存字符串数组分配?
【发布时间】:2019-03-18 15:53:46
【问题描述】:

这是我声明的 xml 文件中的 Stringarray:

Resources res = getResources();

    final String[] list = res.getStringArray(R.array.myArray);

onSaveInstanceState 代码如下所示:

 @Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);


    outState.putStringArrayList("list",  R.array.myArray); 

}
/* Gives me this error :Wrong 2nd argument type. Found: 'int', required: 
 'java.util.ArrayList<java.lang.String>'. . . */

缺少什么,有什么问题,我不明白,我尝试了许多不同的连接方式来调用 myArray,但没有用,如果您需要更多信息,请告诉我。

Android Studio is trying to help me but I dont know how to write this ?

【问题讨论】:

  • 错误很明显——你需要传递一个ArrayList&lt;String&gt;而不是一个int作为第二个参数。
  • 是的,但我首先不明白那是一个 int,你能给我一个样本吗..?
  • R... 常量只是ints,是实际资源数据的数字键
  • 语法应该是怎样的?好像我不能在 onCreate 方法之外调用我的 Array .. ?
  • 第一个代码 sn-p 已经显示了如何以String[] 检索资源。只需将其转换为java.util.ArrayList&lt;java.lang.String&gt;(阅读ArrayList 的文档)。

标签: java android arrays string android-savedstate


【解决方案1】:

您可以将数组转换为列表,然后可以将其作为第二个参数传递,如下所示:

    List<String> arrayList = Arrays.asList(list);
    outState.putStringArrayList("list", (ArrayList<String>) arrayList);

【讨论】:

  • = Arrays.asList(list);而不是我应该正确输入 myArray 的“列表”,无论如何,如果我输入我的 StringArray 或列表,我会得到相同的错误:无法解析符号“..”。
  • 就像,它确实在自动完成窗口中显示我的其他字符串作为选项,但不是我的字符串数组 ..
  • 可以这样写 = Arrays.asList(getResources().getStringArray(R.array.myArray))
  • 这适用于大多数 Java 实现,但不能保证强制转换成功。
  • 所以我们也可以用另一种方式来做——> ArrayList myList = new ArrayList(arrayList);然后将此“myList”添加为第二个参数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-11
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 2022-01-17
相关资源
最近更新 更多