Andriod学习笔记2:“Your content must have a ListView whose id attribute is 'android.R.id.list'”问题的解决办法

问题描述

activity_main.xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   tools:context=".MainActivity">

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

</LinearLayout>

MainActivity.java部分代码如下:

public class MainActivity extends ListActivity {
   private SimpleCursorAdapter adapter;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);

启动App之后报以下错误信息:

Your content must have a ListView whose id attribute is 'android.R.id.list

解决办法

由于MainActivity继承了ListActivity类,因此对应的布局文件中需要添加ListView的标签,同时其id必须设置成

android:id="@+id/android:list"
或者
android:id="@android:id/list"

设置成功之后,重新启动App就不会报错了。
ListActivity会从绑定的布局中根据android.R.id.list去查找这个控件,这是他的代码的内部实现,如果不这样定义,内部代码就找不到这个ListView,就会报错。

原文地址:https://www.cnblogs.com/imfanqi/p/5004462.html