-2

我有启动 ListActivity 的按钮,但每次单击它时,应用程序都会崩溃并出现以下 LogCat 错误:

01-10 13:12:51.327: E/AndroidRuntime(2970): FATAL EXCEPTION: main
01-10 13:12:51.327: E/AndroidRuntime(2970): java.lang.RuntimeException: Unable to start     activity ComponentInfo{com.app/com.app.Settings}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'

这是xml代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/background"
android:orientation="vertical"
android:padding="15dip" >

<ListView
    android:id="@+id/listViewSettings"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >
</ListView>

</LinearLayout>

这是Java代码:

import java.util.ArrayList;

import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;

public class Settings extends ListActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.settings);
        ArrayList<String> listItems=new ArrayList<String>();
        listItems.add("foo");
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1,
                listItems);
            setListAdapter(adapter);
    }

}

我已经尝试将列表 ID 更改为,list但如果这样做,我会收到以下错误:

If I do this I get the following error: `Error: No resource found that matches the given name (at 'id' with value '@id/list').`
4

3 回答 3

2

您的 XML 中的这一行:

android:id="@+id/listViewSettings"

...必须是这样的:

android:id="@android:id/list"

为什么?好吧,如果您希望它保持您的身份,则ListActivity要求您使用 id " " (使用 a 时同样适用)。android.R.id.listListViewListFragment

于 2013-01-10T12:20:49.803 回答
2

ListActivitysetContentView()如果您只想显示ListActivity默认情况下包含 ListView的 ListView,则不需要您通过该方法为其分配布局。

如果您需要在您的活动中包含比 ListView 更多的视图,您ListActivity仍然可以为您的活动分配一个布局。在这种情况下,您的布局必须包含android:id属性设置为的 ListView @android:id/list

因此,将您的列表 ID 更改为:

android:id="@android:id/list"
于 2013-01-10T12:22:18.157 回答
1

只需更改您的xmlListView-id

<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>

在这种情况下,您的布局必须包含一个ListView属性android:id设置为@android:id/list

于 2013-01-10T12:24:22.903 回答