Ich erhalte eine Laufzeitausnahme
java.lang.RuntimeException: Ihr Inhalt muss eine ListView haben, deren ID-Attribut 'android.R.id.list' lautet.
Ich weiß nicht, was los ist.
@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>
Antworten:
Dadurch wird der Fehler behoben, wenn Sie weiterhin eine ListActivity verwenden möchten.
quelle
android:id="@+id/android:list"
Sie es , wenn es nicht funktioniert. Ihre Klasse muss ListActivity noch erweitern, und anstatt dies zuListView yourListView = (ListView)findViewById(R.id.yourListView);
tun, um zu initialisierenListView yourListView = getListView();
Entfernen Sie den Aufruf von
setContentView
- Sie benötigen ihn nicht in einer ListActivity, es sei denn, Sie tun etwas Radikales. Der Code sollte ohne ihn funktionieren.quelle
Ein anderer Weg ist, nicht zu verlängern
ListActivity
. Nur erweitertActivity
, dann können Sie Ihre Listenansicht von erstellensetContentView()
und die Listenansicht von abrufenfindViewById(R.id.yourlistview)
.Wenn Sie von erweitern
ListActivity
, dann verwenden Sie nichtsetContentView()
. Sie müssen die Standardlistenansicht erhalten, die in der Listenaktivität von gehostet wirdgetListView()
.quelle
Ich hatte ein ähnliches Problem mit der Fehlermeldung, die Sie erhalten haben, und ich fand es, weil ich ListActivity anstatt nur Activity erweitert habe (das bekomme ich, um Code aus einem anderen Projekt neu zu verwenden;))
quelle
quelle
Ich sehe das auch so. In meinem Fall (Vielleicht nicht relevant für Ihren Fall, nur an andere weitergeben)
mainActivity.java
yourClassName extends ListActivity(){...}
wechseln Sie in der Klasse zuyourClassName extends Activity(){...}
quelle
Ich war auch mit diesem Problem konfrontiert. Ich habe meine Aktivitätsklasse von Listenaktivität erweitert, aber die ID meiner Listenansicht war nicht fehlerhaft. Ich habe sie wieder in Liste geändert und jetzt funktioniert sie einwandfrei. Asim Soroya
quelle