2011-10-08 52 views
1

我想製作一個菜單,其中包含4個不同的LinearLayouts。 第一個擁有標題,第二個擁有說明,第三個擁有3個ImageViews,其中有onClick事件,第四個擁有一個Button,它也具有onClick事件。Android:正在強制使用ListView

不知何故,android不喜歡它,並強迫我使用ListView。

異常消息是:了java.lang.RuntimeException:你的內容必須有一個ListView其id屬性爲「android.R.id.list」

我已經嘗試使用ListView控件,它沒有按我的預期工作。例如,第3個佈局有3個按鈕,事件不適用於每個ImageView,而是在ListView的行上。

可以做些什麼?

顯示我的佈局XML文件:

options.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:id="@+id/optionsLayout" 
    android:background="@drawable/bg" android:layout_gravity="center"> 

    <include layout="@layout/options_layout1" android:id="@+id/optionsLayout1" /> 
    <include layout="@layout/options_layout2" android:id="@+id/optionsLayout2" /> 
    <include layout="@layout/options_layout3" android:id="@+id/optionsLayout3" /> 
    <include layout="@layout/options_layout4" android:id="@+id/optionsLayout4" /> 

</LinearLayout> 

options_layout1.xml

<?xml version="1.0" encoding="UTF-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:id="@+id/optionsTitleLayout" 
    android:background="@drawable/options" 
    android:layout_gravity="center" /> 

options_layout2.xml

<?xml version="1.0" encoding="UTF-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:id="@+id/chooseThemeTitleLayout" 
    android:background="@drawable/choose_theme" android:layout_gravity="center" 
    android:layout_marginTop="70dip" /> 

options_layout3.xml

<?xml version="1.0" encoding="UTF-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:id="@+id/optionButtonsLayout" 
    android:layout_gravity="center" android:layout_marginTop="10dip" > 
    <ImageView android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:id="@+id/theme1Btn" 
     android:background="@drawable/theme1_off" android:layout_marginLeft="10dip" 
     android:layout_marginRight="10dip" /> 
    <ImageView android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:layout_centerInParent="true" 
     android:id="@+id/theme2Btn" android:background="@drawable/theme2_off" 
     android:layout_marginLeft="10dip" android:layout_marginRight="10dip" /> 
    <ImageView android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:layout_toRightOf="@id/theme2Btn" 
     android:id="@+id/theme3Btn" android:background="@drawable/theme3_off" 
     android:layout_marginLeft="10dip" android:layout_marginRight="10dip"/> 
</LinearLayout> 

options_layout4.xml

<?xml version="1.0" encoding="UTF-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" android:layout_width="wrap_content" 
    android:layout_height="wrap_content" android:id="@+id/saveButtonLayout" 
    android:layout_gravity="center" > 
    <Button android:id="@+id/saveBtn" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:layout_centerHorizontal="true" 
     android:text="Save" android:layout_marginTop="10dip"/> 
</LinearLayout> 

謝謝, 亨利。

+0

檢查我這裏http://stackoverflow.com/questions/7694923/what-c​​an-i-do-about-this-null-pointer-exception/7694941#7694941 –

回答

2

問題不在於xml,問題出在代碼中的某處。你使用一個特定的類,它需要一個ID R.id.list在你的佈局中。可能你的Activity仍然擴展ListActivity?該活動需要在其佈局中使用R.id.list。

+0

回答這是正確的。我擴展了擴展ListActivity的PreferenceActivity。我改變了我的代碼來擴展Activity,並且一切正常。謝謝。 – Genry

1

你使用的是ListActivity?如果是這樣,請將其替換爲Activity

1
If you extends your activity as ListActivity ,you have to listview with android:id="@android:id/list" 

otherwise extends your activity as Activity and and get listview : 
Listview list = (Listview) findViewById(R.id.mylist);