-->

RuntimeException: Your content must have a ListVie

2018-12-31 15:30发布

问题:

I am getting a run time exception

java.lang.RuntimeException: Your content must have a ListView whose id attribute is \'android.R.id.list\'

I don\'t know what is wrong.

@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);
}

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>

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>

回答1:

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

This will solve the error if you still want to use a ListActivity.



回答2:

Remove the call to setContentView - you don\'t need it in a ListActivity unless you\'re doing something radical. The code should work without it.



回答3:

Another way is, don\'t extend ListActivity. Just extends Activity, then you can create your list view by setContentView() and get the list view by findViewById(R.id.yourlistview).

If you extends from ListActivity, then don\'t use setContentView(). You need get the default list view hosted in list activity by getListView().



回答4:

I had a similar issue with the error message you received, and I found it was because I was extending ListActivity instead of just Activity (that\'s what I get for re-purposing code from a different project ;) )



回答5:

<ListView android:id=\"@id/android:list\"
        android:layout_width=\"fill_parent\"
        android:layout_height=\"wrap_content\"
        android:drawSelectorOnTop=\"false\"
        android:scrollbars=\"vertical\"/>


回答6:

I face like this too. In my case (Maybe not relevant with your case, just share to others) in class mainActivity.java yourClassName extends ListActivity(){...} change to yourClassName extends Activity(){...}



回答7:

I also faced this issue, I was extending my activity class from listactivity, but the id of my list view was not defualt I changed it back to list and now its working fine. Asim soroya



标签: android