Android string可以从代码中工作,但在string.xml中崩溃
我有以下代码:Android string可以从代码中工作,但在string.xml中崩溃,android,listview,arrays,Android,Listview,Arrays,我有以下代码: String personalinfos[] = {"Age", "Gender", "Height", "Weight"}; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.myLayout
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读取字符串数组的正确方法是什么
我不明白它为什么会崩溃。您是否尝试过:
Resources res = getResources();
String[] personalinfos = res.getStringArray(R.array.my_keys); // no []
此处的文档:请像这样尝试-
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));
String personalinfos[];
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.myLayout);
personalinfos=getResources().getStringArray(R.array.my_key);
setListAdapter(新的ArrayAdapter(Screening.this、android.R.layout.simple_list_item_1、personalinfos));
阅读相关内容-尝试在strings.xml中逐个定义字符串,然后在数组中定义项目,如下所示:
@string/string\u标识符
它起作用了吗
有关字符串和字符串数组的更多信息发布日志猫。这就是它崩溃的原因。
2) 如何使用数组创建array.xml文件并直接从xml调用它们
因此,创建您的array.xml
,并将其定义为:
<resources>
<string-array name="array">
<item>A</item>
<item>B</item>
</string-array>
</resources>
A.
B
然后在布局中使用entries属性:
<ListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:entries="@array/array"/>
您不能在任何活动/片段生存期方法之外使用getResources()
。当您尝试在类中访问这些资源时,这些资源尚未准备就绪。要正确执行此操作,请在任意位置定义变量,并在onCreate()
或onCreateView()中对其进行初始化
方法。请参阅一个简单的示例。尝试将您的personalinfos[]
声明为全局变量并对其进行初始化。确保在onCreate中调用getResources().getStringArray(R.array.my_key);不能调用getResources()在实例化activity类之前,相关链接帮助+结合Berťák答案创建字符串列表。
<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"/>