RuntimeException:您的内容必须具有一个ListView,其id属性为'android.R.id.list'

raj*_*aji 87 android

我得到一个运行时异常

java.lang.RuntimeException:您的内容必须具有一个ListView,其id属性为'android.R.id.list'

我不知道出了什么问题.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.newslist);
    mDbHelper.open();
    fillData();
}

private void fillData() {
    Bundle extras = getIntent().getExtras();
    long catID = extras.getLong("cat_id");
    Cursor c = mDbHelper.fetchNews(catID);
    startManagingCursor(c);

    String[] from = new String[] { DBHelper.KEY_TITLE };
    int[] to = new int[] { R.id.newslist_text };

    SimpleCursorAdapter notes = new SimpleCursorAdapter(this, R.layout.text_newslist, c, from, to);
    setListAdapter(notes);
}
Run Code Online (Sandbox Code Playgroud)

newslist.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content">
    <ListView 
         android:id="@+id/catnewslist"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content">
    </ListView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

text_newslist.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <TextView 
        android:text="@+id/newslist_text"
        android:id="@+id/newslist_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">    
    </TextView>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

Nic*_*Nic 186

<ListView android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>
Run Code Online (Sandbox Code Playgroud)

如果您仍想使用ListActivity,这将解决错误.

  • 我不得不使用不同的格式,尝试`android:id ="@ + id/android:list"`如果它不起作用.你的类仍然必须扩展ListActivity,而不是做`ListView yourListView =(ListView)findViewById(R.id.yourListView);`这样做来初始化`ListView yourListView = getListView();` (47认同)
  • 这是解决方案,如果OP曾经关心选择答案! (5认同)

Ben*_* L. 52

删除调用setContentView- 除非你做一些激进的事情,否则你不需要在ListActivity中使用它.代码应该没有它.

  • 但是,如果我们不使用setContentView(),Activity如何知道应用哪个模板? (4认同)

zgc*_*ley 26

另一种方式是,不要延长ListActivity.只需扩展Activity,然后您可以创建列表视图setContentView()并获取列表视图findViewById(R.id.yourlistview).

如果你延伸ListActivity,那么不要使用setContentView().您需要获取列表活动中托管的默认列表视图getListView().


小智 10

我收到的错误消息也有类似的问题,我发现这是因为我正在扩展ListActivity而不仅仅是Activity(这是我从另一个项目重新设计代码所得到的;))


小智 6

<ListView android:id="@id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="false"
        android:scrollbars="vertical"/>
Run Code Online (Sandbox Code Playgroud)