0

我有以下代码:

String personalinfos[] = {"Age", "Gender", "Height", "Weight"};
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.myLayout);

setListAdapter(new ArrayAdapter<String>(Screening.this, android.R.layout.simple_list_item_1, personalinfos));

它有效,它完成了它的工作。但由于我需要做国际化/本地化项目,我将其移至 strings.xml,因此我已将其添加到 strings.xml

<string-array name="my_keys">
    <item>Age</item>
    <item>Gender</item>
    <item>Height</item>
    <item>Weight</item>
</string-array>

并试图将代码更改为:

String personalinfos[] = getResources().getStringArray(R.array.my_keys);

假设我会得到相同的结果,但我没有,我的应用程序崩溃了。

所以在这里提问:

从 strings.xml 读取字符串数组的正确方法是什么?

我不明白为什么它会崩溃。

4

5 回答 5

1

试试这样 -

String personalinfos[];
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.myLayout);

    personalinfos = getResources().getStringArray(R.array.my_keys);

setListAdapter(new ArrayAdapter<String>(Screening.this, android.R.layout.simple_list_item_1, personalinfos));

阅读您的相关内容 - 帮助从 arrays.xml 文件获取字符串数组

于 2012-08-31T13:29:10.090 回答
0

你有没有尝试过:

Resources res = getResources();
String[] personalinfos = res.getStringArray(R.array.my_keys);  // no []

此处的文档:http: //developer.android.com/guide/topics/resources/string-resource.html

于 2012-08-31T13:28:57.773 回答
0

尝试在 strings.xml 中一一定义您的字符串,然后在数组中定义您的项目,例如:

<item>@string/string_identifier</item>

它在工作吗?

有关字符串和字符串数组的更多信息在这里

于 2012-08-31T13:30:21.610 回答
0

1) 发布 LOGCAT。这就是它崩溃的原因。

2) 用你的数组创建一个array.xml 文件并直接从你的xml 调用它们怎么样?

因此,创建您的array.xml并将其定义为:

<resources>
    <string-array name="array">
        <item>A</item>
        <item>B</item>
    </string-array>
</resources>

然后在您的布局中使用条目属性:

<ListView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:entries="@array/array"/>
于 2012-08-31T13:38:03.383 回答
0

您不能getResources()在任何活动/片段生命周期方法之外使用。当您尝试在课堂上访问这些资源时,这些资源尚未准备就绪。要做到这一点,请在您想要的任何地方正确定义您的变量并在onCreate()onCreateView()方法中对其进行初始化。有关简单示例,请参阅Praveenkumar 答案

于 2017-12-18T09:59:44.837 回答