2013-04-05 62 views
0

當我嘗試在Android應用程序中運行此特定活動時,我在箭頭標記的行(在Eclipse中顯示爲單行)出現NullPointerException。LinearLayout中ListView中的NullPointerException

此活動使用線性佈局,並且在線性元素中,我猜想'段'中有一個ListView。我在活動中只有一個ListView的其他活動中使用了相同的ListView代碼,因此這些類擴展了ListActivity。

在下面顯示的代碼中,我只是像往常一樣擴展Activity,因爲如果我在這裏擴展ListActivity,我得到一個錯誤,指出我必須有一個ListView屬性爲'android.R.id.list',正如你所看到的那樣。

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_book_event); 

    final ListView lv = (ListView) findViewById(android.R.id.list); 
    lv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.cities))); <--- 

    final Spinner s = (Spinner) findViewById(R.id.spinner); 

    ArrayAdapter<CharSequence> aa = new ArrayAdapter<CharSequence>(this, R.array.noSeats, android.R.layout.simple_spinner_item); 
    aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    s.setAdapter(aa); 
    s.setOnItemSelectedListener(new OnItemSelectedListener() 
    { 

     @Override 
     public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
     { 
      noOfSeats = s.getSelectedItemPosition(); 
      noOfSeats = noOfSeats + 1; 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) 
     { 

     } 

    }); 
} 

這裏有什麼問題?其他ListViews訪問字符串數組就很好,那麼這是如何不同?

編輯:添加堆棧跟蹤

04-05 21:30:00.282: E/AndroidRuntime(12791): FATAL EXCEPTION: main 
04-05 21:30:00.282: E/AndroidRuntime(12791): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.event_booker/com.example.event_booker.BookEvent}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list' 
04-05 21:30:00.282: E/AndroidRuntime(12791): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1659) 
04-05 21:30:00.282: E/AndroidRuntime(12791): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1675) 
04-05 21:30:00.282: E/AndroidRuntime(12791): at android.app.ActivityThread.access$1500(ActivityThread.java:121) 
04-05 21:30:00.282: E/AndroidRuntime(12791): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:943) 
04-05 21:30:00.282: E/AndroidRuntime(12791): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-05 21:30:00.282: E/AndroidRuntime(12791): at android.os.Looper.loop(Looper.java:130) 
04-05 21:30:00.282: E/AndroidRuntime(12791): at android.app.ActivityThread.main(ActivityThread.java:3701) 
04-05 21:30:00.282: E/AndroidRuntime(12791): at java.lang.reflect.Method.invokeNative(Native Method) 
04-05 21:30:00.282: E/AndroidRuntime(12791): at java.lang.reflect.Method.invoke(Method.java:507) 
04-05 21:30:00.282: E/AndroidRuntime(12791): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) 
04-05 21:30:00.282: E/AndroidRuntime(12791): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:624) 
04-05 21:30:00.282: E/AndroidRuntime(12791): at dalvik.system.NativeStart.main(Native Method) 
04-05 21:30:00.282: E/AndroidRuntime(12791): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list' 
04-05 21:30:00.282: E/AndroidRuntime(12791): at android.app.ListActivity.onContentChanged(ListActivity.java:243) 
04-05 21:30:00.282: E/AndroidRuntime(12791): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:230) 
04-05 21:30:00.282: E/AndroidRuntime(12791): at android.app.Activity.setContentView(Activity.java:1657) 
04-05 21:30:00.282: E/AndroidRuntime(12791): at com.example.event_booker.BookEvent.onCreate(BookEvent.java:22) 
04-05 21:30:00.282: E/AndroidRuntime(12791): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
04-05 21:30:00.282: E/AndroidRuntime(12791): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1623) 
04-05 21:30:00.282: E/AndroidRuntime(12791): ... 11 more 
+0

請從Logcat發佈一條痕跡 – Karakuri 2013-04-05 21:14:12

回答

0

的問題是,android.R.id.list指的是默認列表視圖ID是"@android:id/list"。你可以選擇在你的xml中使用它,或者讓你的自定義id從代碼中引用。

你可以有你的ListView有一個ID,例如

android:id="@android:id/list" 

喜歡的東西

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

或有你的ID:

<ListView 
android:id="@+id/yourlist" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 

,並呼籲:

final ListView lv = (ListView) findViewById(R.id.yourlist); 
+0

Sorted!非常感謝你! – 2013-04-05 22:05:05