我创建了一个像这样的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);
}
}
如你所见,我没有做任何其他事情。但我收到此错误:
您的内容必须有一个 id 属性为“android.R.id.list”的 ListView
即使我的 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
,并且应该具有相同的 id,无需关键字 android。
您的
mainlist.xml
文件中应该有一个列表视图,其 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);
首选项.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>
继承Activity类而不是ListActivity就可以解决这个问题。
public class ExampleActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainlist);
}
}
<ListView android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:drawSelectorOnTop="false"
android:scrollbars="vertical"/>
影响我的另一件事:如果您有多个测试设备,请确保对设备使用的布局进行更改。就我而言,我花了一段时间对“layout”目录中的 xml 进行更改,直到我发现我的较大手机(我在测试中途切换到该手机)正在使用“layout-sw360dp”目录中的 xml。咕噜!