你的内容必须有一个ListView的id属性是“android.R.id.list”

我已经创build了一个这样的XML文件:

<?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/list" > </ListView> 

和一个活动:

 public class ExampleActivity extends ListActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mainlist); } } 

如你所见,我没有做任何事情。 但是我得到错误:

你的内容必须有一个ListView的id属性是“android.R.id.list”

即使我有我的xml中的android:id="@+id/list"行。

问题是什么?

像这样重命名ListView的id,

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

由于您使用的是ListActivity您的xml文件必须在提及ID的同时指定关键字android

如果你需要一个自定义ListView而不是扩展一个ListActivity ,你只需要扩展一个Activity并且应该有没有关键字android的相同的id。

你应该在你的mainlist.xml文件中有一个listview,id为@android:id/list

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

这应该可以解决你的问题

确切的方法我基于上面的反馈来解决这个问题,因为我起初无法得到它的工作:

activity_main.xml中:

 <?xml version="1.0" encoding="utf-8"?> <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@android:id/list" > </ListView> 

MainActivity.java:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); addPreferencesFromResource(R.xml.preferences); 

的preferences.xml:

 <?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <PreferenceCategory android:key="upgradecategory" android:title="Upgrade" > <Preference android:key="download" android:title="Get OnCall Pager Pro" android:summary="Touch to download the Pro Version!" /> </PreferenceCategory> </PreferenceScreen> 

inheritanceActivity类而不是ListActivity可以解决此问题。

 public class ExampleActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.mainlist); } } 

另一件事情影响了我:如果您有多个testing设备,请确保您正在对设备使用的布局进行更改。 在我的情况下,我花了一段时间在“布局”目录中更改xmls,直到我发现我的大型手机(通过testing切换到中途)在“layout-sw360dp”目录中使用xmls。 哎呀!