我有以下代码:
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读取字符串数组的正确方法是什么?
我不明白为什么会崩溃。
答案 0 :(得分: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));
答案 1 :(得分:0)
你试过了吗?
Resources res = getResources();
String[] personalinfos = res.getStringArray(R.array.my_keys); // no []
此处的文档:http://developer.android.com/guide/topics/resources/string-resource.html
答案 2 :(得分:0)
尝试在strings.xml中逐个定义字符串,然后在数组中定义项目,如:
<item>@string/string_identifier</item>
有效吗?
有关字符串和字符串数组的更多信息here
答案 3 :(得分:0)
1)发布LOGCAT。这就是崩溃的原因。
2)如何使用数组创建array.xml文件并直接从xml调用它们?
因此,请创建您的array.xml
并将其定义为:
<resources>
<string-array name="array">
<item>A</item>
<item>B</item>
</string-array>
</resources>
然后在你的布局中使用entries属性:
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:entries="@array/array"/>
答案 4 :(得分:0)
您不能在任何活动/片段生命周期方法之外使用getResources()
。当您尝试在班级中访问它们时,资源尚未准备就绪。为此,您可以在任意位置正确定义变量,并使用onCreate()
或onCreateView()
方法对其进行初始化。有关简单示例,请参阅Praveenkumar answer。