Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android string可以从代码中工作,但在string.xml中崩溃_Android_Listview_Arrays - Fatal编程技术网

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"/>