RuntimeException: ваш контент должен иметь ListView, чей атрибут id равен «android.R.id.list» - PullRequest
87 голосов
/ 14 июня 2010

Я получаю исключение во время выполнения

java.lang.RuntimeException: ваш контент должен иметь ListView, чей идентификатор атрибут '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);
}

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>

Ответы [ 7 ]

184 голосов
/ 28 марта 2011
<ListView android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

Это устранит ошибку, если вы все еще хотите использовать ListActivity.

52 голосов
/ 14 июня 2010

Удалите вызов на setContentView - он не нужен в ListActivity, если вы не делаете радикальных действий Код должен работать без него.

26 голосов
/ 02 июля 2012

Другой способ - не расширять ListActivity.Просто расширяет Activity, затем вы можете создать представление списка с помощью setContentView() и получить представление списка с помощью findViewById(R.id.yourlistview).

Если вы расширяете с ListActivity, то не используйте setContentView().Вам нужно получить представление списка по умолчанию, размещенное в списке активности, по getListView().

10 голосов
/ 26 марта 2011

У меня была похожая проблема с полученным вами сообщением об ошибке, и я обнаружил, что это связано с тем, что я расширяю ListActivity, а не просто Activity (это то, что я получаю за повторное назначение кода из другого проекта;))

6 голосов
/ 21 мая 2013
<ListView android:id="@id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="false"
        android:scrollbars="vertical"/>
3 голосов
/ 01 октября 2015

Я тоже так сталкиваюсь. В моем случае (возможно, не относится к вашему делу, просто поделитесь с другими) в классе mainActivity.java yourClassName extends ListActivity(){...} изменить на yourClassName extends Activity(){...}

1 голос
/ 31 декабря 2011

Я также столкнулся с этой проблемой, я расширял свой класс активности с listactivity, но идентификатор моего представления списка не был по умолчанию, я изменил его обратно на список, и теперь он работает нормально. Асим сороя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...