2010-06-14 45 views
85

我得到一個運行時異常RuntimeException的:你的內容必須有一個ListView其id屬性爲「android.R.id.list」

了java.lang.RuntimeException:你的內容必須有一個ListView,其id 屬性是'android.R.id.list'

我不知道什麼是錯的。

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

請務必選擇一個答案! – Phil 2011-09-16 13:57:04

+0

什麼是mDbHelper?我在同一條船上,並試圖使其工作我的ListView ... – 2012-02-22 18:04:59

回答

51

刪除調用setContentView - 除非你,你不需要它在ListActivity做些激進的事情。代碼應該沒有它。

+4

但是,如果我們不使用setContentView(),Activity如何知道要應用的模板? – ses 2013-10-14 02:14:15

+0

@ses,我相信它會使用預定義的ListView模板。 – craned 2016-01-06 17:05:15

10

我有收到錯誤消息類似的問題,我發現那是因爲我正在伸出ListActivity而不是隻活動(這就是我得到了來自不同的項目,再重新考慮代碼;))

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

如果您仍想使用ListActivity,這將解決錯誤。

+45

我不得不使用不同的格式,如果它不起作用,請嘗試'android:id =「@ + id/android:list」'。你的類必須仍然擴展ListActivity,而不是'ListView yourListView =(ListView)findViewById(R.id.yourListView);'這樣做來初始化'ListView yourListView = getListView();' – CQM 2011-10-12 16:01:46

+0

@CQM這裏有任何一種模式對這種行爲? – 2012-04-21 03:04:53

+5

這是解決方案,如果OP曾經關心選擇一個答案! – States 2012-10-16 23:40:26

1

我也遇到了這個問題,我從listactivity擴展我的活動類,但我的列表視圖的id不defencet我改回列表,現在它的工作正常。 Asim soroya

26

另一種方法是,不要延伸ListActivity。只是擴展Activity,那麼你可以創建你的列表視圖setContentView()並獲得列表視圖findViewById(R.id.yourlistview)

如果從ListActivity延伸,則不要使用setContentView()。您需要在getListView()之前獲得列表活動中託管的默認列表視圖。

+0

非常有幫助的人 – Erfan 2014-07-07 09:10:58

+0

謝謝你,好的工作。 – Developer 2016-09-17 11:50:27

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

我也是這樣的。在我的情況下(可能與您的情況無關,只是分享給其他人)mainActivity.java yourClassName extends ListActivity(){...}更改爲yourClassName extends Activity(){...}

+0

我發現這真的很有用。感謝Baras分享這個。 – Ayoub 2017-08-03 19:53:05

相關問題