當我嘗試在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
請從Logcat發佈一條痕跡 – Karakuri 2013-04-05 21:14:12