Je reçois une exception d'exécution
java.lang.RuntimeException: votre contenu doit avoir un ListView dont l'attribut id est 'android.R.id.list'
Je ne sais pas ce qui ne va pas.
@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>
Réponses:
Cela résoudra l'erreur si vous souhaitez toujours utiliser un ListActivity.
la source
android:id="@+id/android:list"
si cela ne fonctionne pas. Votre classe doit toujours étendre ListActivity, et au lieu de faireListView yourListView = (ListView)findViewById(R.id.yourListView);
cela pour initialiserListView yourListView = getListView();
Supprimez l'appel à
setContentView
- vous n'en avez pas besoin dans une ListActivity sauf si vous faites quelque chose de radical. Le code devrait fonctionner sans lui.la source
Une autre façon est de ne pas s'étendre
ListActivity
. S'étend simplementActivity
, alors vous pouvez créer votre vue de liste parsetContentView()
et obtenir la vue de liste parfindViewById(R.id.yourlistview)
.Si vous étendez de
ListActivity
, ne l'utilisez passetContentView()
. Vous devez obtenir la vue de liste par défaut hébergée dans l'activité de liste pargetListView()
.la source
J'ai eu un problème similaire avec le message d'erreur que vous avez reçu, et j'ai trouvé que c'était parce que j'étendais ListActivity au lieu de simplement Activity (c'est ce que j'obtiens pour redéfinir le code d'un projet différent;))
la source
la source
Je fais face comme ça aussi. Dans mon cas (peut-être pas pertinent avec votre cas, partagez-le simplement avec les autres) en classe
mainActivity.java
yourClassName extends ListActivity(){...}
changez pouryourClassName extends Activity(){...}
la source
J'ai également rencontré ce problème, j'étendais ma classe d'activité à partir de listactivity, mais l'id de ma vue de liste n'était pas par défaut, je l'ai changé en liste et maintenant cela fonctionne bien. Asim Soroya
la source