我遇到了一個我正在編寫的Android應用程序的問題。由於NullPointerException
,它在Eclair上墜毀,但在Froyo和薑餅上運行良好。任何人都可以告訴我如何重寫這個以避免空指針異常?提前致謝。Android應用程序 - 在Eclair上返回空指針異常
編輯 我增加了堆棧跟蹤和logcat的,我可能讀了它最初錯誤的,看起來像它可能是我TabWidget
?
logcat中引用這條線在我的Home
類:
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("Snow", res.getDrawable(R.drawable.weather2)).setContent(new Intent(this,FirstTab.class)));
logcat的
ERROR/AndroidRuntime(314): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wilcoxis.android.kirkwood/com.wilcoxis.android.Home}: java.lang.NullPointerException
ERROR/AndroidRuntime(314): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
ERROR/AndroidRuntime(314): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
ERROR/AndroidRuntime(314): at android.app.ActivityThread.access$2200(ActivityThread.java:119)
ERROR/AndroidRuntime(314): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
ERROR/AndroidRuntime(314): at android.os.Handler.dispatchMessage(Handler.java:99)
ERROR/AndroidRuntime(314): at android.os.Looper.loop(Looper.java:123)
ERROR/AndroidRuntime(314): at android.app.ActivityThread.main(ActivityThread.java:4363)
ERROR/AndroidRuntime(314): at java.lang.reflect.Method.invokeNative(Native Method)
ERROR/AndroidRuntime(314): at java.lang.reflect.Method.invoke(Method.java:521)
ERROR/AndroidRuntime(314): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
ERROR/AndroidRuntime(314): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
ERROR/AndroidRuntime(314): at dalvik.system.NativeStart.main(Native Method)
ERROR/AndroidRuntime(314): Caused by: java.lang.NullPointerException
ERROR/AndroidRuntime(314): at android.widget.TabWidget.onFocusChange(TabWidget.java:351)
ERROR/AndroidRuntime(314): at android.view.View.onFocusChanged(View.java:2622)
ERROR/AndroidRuntime(314): at android.view.View.handleFocusGainInternal(View.java:2445)
ERROR/AndroidRuntime(314): at android.view.ViewGroup.handleFocusGainInternal(ViewGroup.java:404)
ERROR/AndroidRuntime(314): at android.view.View.requestFocus(View.java:3562)
ERROR/AndroidRuntime(314): at android.view.ViewGroup.requestFocus(ViewGroup.java:976)
ERROR/AndroidRuntime(314): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:1021)
ERROR/AndroidRuntime(314): at android.view.ViewGroup.requestFocus(ViewGroup.java:977)
ERROR/AndroidRuntime(314): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:1021)
ERROR/AndroidRuntime(314): at android.view.ViewGroup.requestFocus(ViewGroup.java:980)
ERROR/AndroidRuntime(314): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:1021)
ERROR/AndroidRuntime(314): at android.view.ViewGroup.requestFocus(ViewGroup.java:977)
ERROR/AndroidRuntime(314): at android.view.ViewGroup.onRequestFocusInDescendants(ViewGroup.java:1021)
ERROR/AndroidRuntime(314): at android.view.ViewGroup.requestFocus(ViewGroup.java:980)
ERROR/AndroidRuntime(314): at android.view.View.requestFocus(View.java:3513)
ERROR/AndroidRuntime(314): at android.view.View.requestFocus(View.java:3491)
ERROR/AndroidRuntime(314): at android.widget.TabHost.setCurrentTab(TabHost.java:334)
ERROR/AndroidRuntime(314): at android.widget.TabHost.addTab(TabHost.java:213)
ERROR/AndroidRuntime(314): at com.wilcoxis.android.Home.onCreate(Home.java:83)
ERROR/AndroidRuntime(314): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
ERROR/AndroidRuntime(314): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
ERROR/AndroidRuntime(314): ... 11 more
堆棧跟蹤
DalvikVM[localhost:8610]
Thread [<3> main] (Suspended (exception NullPointerException))
TabWidget.onFocusChange(View, boolean) line: 351
TabWidget(View).onFocusChanged(boolean, int, Rect) line: 2622
TabWidget(View).handleFocusGainInternal(int, Rect) line: 2445
TabWidget(ViewGroup).handleFocusGainInternal(int, Rect) line: 404
TabWidget(View).requestFocus(int, Rect) line: 3562
TabWidget(ViewGroup).requestFocus(int, Rect) line: 976
LinearLayout(ViewGroup).onRequestFocusInDescendants(int, Rect) line: 1021
LinearLayout(ViewGroup).requestFocus(int, Rect) line: 977
TabHost(ViewGroup).onRequestFocusInDescendants(int, Rect) line: 1021
TabHost(ViewGroup).requestFocus(int, Rect) line: 980
FrameLayout(ViewGroup).onRequestFocusInDescendants(int, Rect) line: 1021
FrameLayout(ViewGroup).requestFocus(int, Rect) line: 977
PhoneWindow$DecorView(ViewGroup).onRequestFocusInDescendants(int, Rect) line: 1021
PhoneWindow$DecorView(ViewGroup).requestFocus(int, Rect) line: 980
PhoneWindow$DecorView(View).requestFocus(int) line: 3513
PhoneWindow$DecorView(View).requestFocus() line: 3491
TabHost.setCurrentTab(int) line: 334
TabHost.addTab(TabHost$TabSpec) line: 213
Home.onCreate(Bundle) line: 83
Instrumentation.callActivityOnCreate(Activity, Bundle) line: 1047
ActivityThread.performLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2459
ActivityThread.handleLaunchActivity(ActivityThread$ActivityRecord, Intent) line: 2512
ActivityThread.access$2200(ActivityThread, ActivityThread$ActivityRecord, Intent) line: 119
ActivityThread$H.handleMessage(Message) line: 1863
ActivityThread$H(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 123
ActivityThread.main(String[]) line: 4363
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]
Method.invoke(Object, Object...) line: 521
ZygoteInit$MethodAndArgsCaller.run() line: 860
ZygoteInit.main(String[]) line: 618
NativeStart.main(String[]) line: not available [native method]
Thread [<13> Binder Thread #2] (Running)
Thread [<11> Binder Thread #1] (Running)
'最後一個函數被調用之前被調用是String []'String []不是一個函數,它是返回類型。該函數是updateData()。並且聲明一個方法'拋出異常'是不好的。你應該只顯式聲明拋出你知道你可以拋出的東西。 – Falmarri 2010-12-14 18:37:00
你的logcat打印什麼。很明顯,如果函數調用後數據爲空,則該函數會拋出異常。 – Falmarri 2010-12-14 18:37:46