Я получаю исключение во время выполнения
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);
}
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>
Ответы:
<ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent"/>
Это решит ошибку, если вы все еще хотите использовать ListActivity.
источник
android:id="@+id/android:list"
если он не работает. Ваш класс должен по-прежнему расширять ListActivity, и вместо этогоListView yourListView = (ListView)findViewById(R.id.yourListView);
делать это для инициализацииListView yourListView = getListView();
Удалите вызов
setContentView
- он вам не нужен в ListActivity, если вы не делаете что-то радикальное. Код должен работать и без него.источник
Другой способ - не расширяться
ListActivity
. Просто расширяетсяActivity
, затем вы можете создать представление спискаsetContentView()
и получить представление спискаfindViewById(R.id.yourlistview)
.Если вы расширяете от
ListActivity
, не используйтеsetContentView()
. Вам нужно получить представление списка по умолчанию, размещенное в активности списка пользователемgetListView()
.источник
У меня была аналогичная проблема с сообщением об ошибке, которое вы получили, и я обнаружил, что это связано с тем, что я расширял ListActivity, а не просто Activity (это то, что я получаю за перенацеливание кода из другого проекта;))
источник
<ListView android:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawSelectorOnTop="false" android:scrollbars="vertical"/>
источник
Я тоже с этим сталкиваюсь. В моем случае (возможно, не имеет отношения к вашему случаю, просто поделитесь с другими) в классе
mainActivity.java
yourClassName extends ListActivity(){...}
измените наyourClassName extends Activity(){...}
источник
Я также столкнулся с этой проблемой, я расширял свой класс активности из списка действий, но идентификатор моего представления списка не был по умолчанию, я изменил его обратно на список, и теперь он работает нормально. Асим Сороя
источник