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.java
yourClassName 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