Estou recebendo uma exceção de tempo de execução
java.lang.RuntimeException: Seu conteúdo deve ter um ListView cujo atributo de id é 'android.R.id.list'
Eu não sei o que está errado.
@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>
Respostas:
Isso resolverá o erro se você ainda quiser usar uma ListActivity.
fonte
android:id="@+id/android:list"
se não funcionar. Sua classe ainda deve estender ListActivity e, em vez deListView yourListView = (ListView)findViewById(R.id.yourListView);
fazer isso, para inicializarListView yourListView = getListView();
Remova a chamada para
setContentView
- você não precisa dela em uma ListActivity, a menos que esteja fazendo algo radical. O código deve funcionar sem ele.fonte
Outra maneira é não estender
ListActivity
. Apenas estendeActivity
, então você pode criar sua visualização de lista porsetContentView()
e obter a visualização de lista porfindViewById(R.id.yourlistview)
.Se você estende de
ListActivity
, não usesetContentView()
. Você precisa obter a exibição de lista padrão hospedada na atividade de lista porgetListView()
.fonte
Tive um problema semelhante com a mensagem de erro que você recebeu, e descobri que era porque eu estava estendendo ListActivity em vez de apenas Activity (isso é o que obtenho por re-propor o código de um projeto diferente;))
fonte
fonte
Eu também enfrento assim. No meu caso (talvez não seja relevante para o seu caso, apenas compartilhe com os outros) na classe,
mainActivity.java
yourClassName extends ListActivity(){...}
mude parayourClassName extends Activity(){...}
fonte
Eu também enfrentei esse problema, estava estendendo minha classe de atividade de lista de atividade, mas o id da minha visualização de lista não era padrão, mudei de volta para lista e agora está funcionando bem. Asim soroya
fonte