Obtengo una excepción de tiempo de ejecución
java.lang.RuntimeException: su contenido debe tener un ListView cuyo atributo de identificación sea 'android.R.id.list'
No se que esta mal.
@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>

Respuestas:
<ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent"/>Esto resolverá el error si aún desea utilizar ListActivity.
fuente
android:id="@+id/android:list"si no funciona. Su clase aún debe extender ListActivity, y en lugar deListView yourListView = (ListView)findViewById(R.id.yourListView);hacer esto para inicializarListView yourListView = getListView();Elimine la llamada a
setContentView: no la necesita en una ListActivity a menos que esté haciendo algo radical. El código debería funcionar sin él.fuente
Otra forma es no extender
ListActivity. Simplemente amplíaActivity, luego puede crear su vista de listasetContentView()y obtener la vista de listafindViewById(R.id.yourlistview).Si se extiende desde
ListActivity, no utilicesetContentView(). Necesita obtener la vista de lista predeterminada alojada en la actividad de lista porgetListView().fuente
Tuve un problema similar con el mensaje de error que recibió, y descubrí que era porque estaba extendiendo ListActivity en lugar de solo Activity (eso es lo que obtengo por reutilizar el código de un proyecto diferente;))
fuente
<ListView android:id="@id/android:list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawSelectorOnTop="false" android:scrollbars="vertical"/>fuente
Yo también me enfrento a esto. En mi caso (tal vez no sea relevante para tu caso, solo compártelo con otros) en la clase
mainActivity.javayourClassName extends ListActivity(){...}cambia ayourClassName extends Activity(){...}fuente
También enfrenté este problema, estaba extendiendo mi clase de actividad de listactivity, pero la identificación de mi vista de lista no era defualt, la cambié de nuevo a lista y ahora funciona bien. Asim soroya
fuente