Saya mendapatkan pengecualian waktu proses
java.lang.RuntimeException: Konten Anda harus memiliki ListView yang atribut id-nya adalah 'android.R.id.list'
Saya tidak tahu apa yang salah.
@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>
Jawaban:
<ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent"/>
Ini akan menyelesaikan kesalahan jika Anda masih ingin menggunakan ListActivity.
sumber
android:id="@+id/android:list"
jika tidak berhasil. Kelas Anda masih harus memperluas ListActivity, dan daripada melakukanListView yourListView = (ListView)findViewById(R.id.yourListView);
ini untuk menginisialisasiListView yourListView = getListView();
Hapus panggilan ke
setContentView
- Anda tidak membutuhkannya dalam ListActivity kecuali Anda melakukan sesuatu yang radikal. Kode harus berfungsi tanpanya.sumber
Cara lain adalah, jangan diperpanjang
ListActivity
. Perluas sajaActivity
, lalu Anda dapat membuat tampilan daftarsetContentView()
dan mendapatkan tampilan daftarfindViewById(R.id.yourlistview)
.Jika Anda memperluas dari
ListActivity
, maka jangan gunakansetContentView()
. Anda perlu mendapatkan tampilan daftar default yang dihosting di aktivitas daftar olehgetListView()
.sumber
Saya memiliki masalah serupa dengan pesan kesalahan yang Anda terima, dan saya menemukan itu karena saya memperluas ListActivity dan bukan hanya Activity (itulah yang saya dapatkan untuk mengubah kode dari proyek yang berbeda;))
sumber
<ListView android:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawSelectorOnTop="false" android:scrollbars="vertical"/>
sumber
Saya menghadapi seperti ini juga. Dalam kasus saya (Mungkin tidak relevan dengan kasus Anda, bagikan saja kepada orang lain) di
mainActivity.java
yourClassName extends ListActivity(){...}
perubahan kelas keyourClassName extends Activity(){...}
sumber
Saya juga menghadapi masalah ini, saya memperluas kelas aktivitas saya dari daftar aktivitas, tetapi id tampilan daftar saya tidak defualt. Saya mengubahnya kembali ke daftar dan sekarang berfungsi dengan baik. Asim soroya
sumber