RuntimeException: İçeriğinizin id özniteliği 'android.R.id.list' olan bir ListView olması gerekir.


87

Çalışma zamanı istisnası alıyorum

java.lang.RuntimeException: İçeriğinizin, id özniteliği 'android.R.id.list' olan bir ListView olması gerekir

Neyin yanlış olduğunu bilmiyorum.

@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>

15
bir cevap seçtiğinizden emin olun!
Phil

mDbHelper nedir? Ben de aynı gemideyim ve ListView'umda çalışmasını sağlamaya çalışıyorum ...
Nick Kahn

Yanıtlar:


188
<ListView android:id="@android:id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

Hala bir ListActivity kullanmak istiyorsanız, bu hatayı çözecektir.


49
Farklı bir format kullanmak zorunda kaldım, android:id="@+id/android:list" işe yaramazsa deneyin . Sınıfınız yine de ListActivity'yi genişletmeli ve bunu ListView yourListView = (ListView)findViewById(R.id.yourListView);başlatmak için yapmak yerineListView yourListView = getListView();
CQM

@CQM, bu davranışla ilgili herhangi bir model var mı?
Rui Carneiro

5
OP bir cevap seçmeyi düşündüyse çözüm budur!
Devletler

1
Bu neden işe yarıyor? Android: id'ye neden başka bir değer atayamıyorum?
Vivek Pandey

1
@VivekPandey, çünkü bir android ile ListView gerektiren ListActivity'yi genişletiyorsunuz: id of list, developer.android.com/reference/android/app/ListActivity.html , aşağıda zgcharley açıkça açıkladı
mirageservo

52

Çağrıyı kaldırın setContentView- radikal bir şey yapmadığınız sürece ListActivity'de buna ihtiyacınız yoktur. Kod onsuz çalışmalıdır.


4
Peki, setContentView () kullanmazsak Activity hangi şablonun uygulanacağını nasıl bilir?
ses

@ses, önceden tanımlanmış bir ListView şablonu kullanacağına inanıyorum.
craned

26

Başka bir yol da, uzatmayın ListActivity. Sadece genişletir Activity, ardından liste görünümünüzü oluşturabilir ve liste görünümünü setContentView()elde edebilirsiniz findViewById(R.id.yourlistview).

Eğer uzanıyorsanız ListActivity, kullanmayın setContentView(). Liste etkinliğinde barındırılan varsayılan liste görünümünü almalısınız getListView().


10

Aldığınız hata mesajıyla ilgili benzer bir sorun yaşadım ve bunun nedeni yalnızca Activity yerine ListActivity'yi genişletiyor olmamdı (farklı bir projeden kodu yeniden kullanmak için aldığım şey bu;))


6
<ListView android:id="@id/android:list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="false"
        android:scrollbars="vertical"/>

3

Ben de böyle yüzleşiyorum. Benim durumumda (Belki sizin durumunuzla ilgili değil, sadece başkalarıyla paylaşın) sınıf mainActivity.java yourClassName extends ListActivity(){...}değişikliğiyourClassName extends Activity(){...}


1
bunu gerçekten yararlı buldum. bunu paylaştığı için teşekkürler Baras.
Ayyoub

sonraki bira benden.
Venkata KC Tata

1

Bu sorunla da karşılaştım, etkinlik sınıfımı listaktiviteden genişletiyordum, ancak liste görünümümün kimliği varsayılan değildi, listeye geri döndürdüm ve şimdi iyi çalışıyor. Asım soroya

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.