我有启动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').`
答案 0 :(得分:2)
XML中的这一行:
android:id="@+id/listViewSettings"
......必须是这样的:
android:id="@android:id/list"
为什么呢?好吧,ListActivity
要求您使用ID“android.R.id.list
”,如果您希望它保持ListView
(使用ListFragment
时同样适用)。
答案 1 :(得分:2)
ListActivity
不要求您通过setContentView()
方法为其分配布局,如果您只想显示ListView ListActivity
默认包含ListView。
如果您需要在ListActivity
中包含比ListView更多的视图,您仍然可以为您的活动分配布局。在这种情况下,您的布局必须包含一个List android:id
属性设置为@android:id/list
。
因此,请将您的列表ID更改为:
android:id="@android:id/list"
答案 2 :(得分:1)
只需更改您的xml ListView-id
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
在这种情况下,您的布局必须包含ListView
,android:id
属性设置为@android:id/list