java.lang.NullPointerException由于android中的setupActionBar

时间:2013-04-06 17:59:26

标签: java android eclipse

我希望堆栈跟踪讲述故事。通常情况下,我在setupActionBar()内拨打onCreatesetupActionBar()的代码会自动生成

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void setupActionBar() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        getActionBar().setDisplayHomeAsUpEnabled(true);
    }
}

也许其他人经历过这样的事情。我的清单,布局,字符串资源或我可以看到的任何地方都没有红线。

04-06 09:59:25.913: E/AndroidRuntime(628): FATAL EXCEPTION: main
04-06 09:59:25.913: E/AndroidRuntime(628): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.game.example/com.game.example.WeaponActivity}: java.lang.NullPointerException
04-06 09:59:25.913: E/AndroidRuntime(628):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
04-06 09:59:25.913: E/AndroidRuntime(628):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
04-06 09:59:25.913: E/AndroidRuntime(628):  at android.app.ActivityThread.access$600(ActivityThread.java:130)
04-06 09:59:25.913: E/AndroidRuntime(628):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
04-06 09:59:25.913: E/AndroidRuntime(628):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-06 09:59:25.913: E/AndroidRuntime(628):  at android.os.Looper.loop(Looper.java:137)
04-06 09:59:25.913: E/AndroidRuntime(628):  at android.app.ActivityThread.main(ActivityThread.java:4745)
04-06 09:59:25.913: E/AndroidRuntime(628):  at java.lang.reflect.Method.invokeNative(Native Method)
04-06 09:59:25.913: E/AndroidRuntime(628):  at java.lang.reflect.Method.invoke(Method.java:511)
04-06 09:59:25.913: E/AndroidRuntime(628):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
04-06 09:59:25.913: E/AndroidRuntime(628):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
04-06 09:59:25.913: E/AndroidRuntime(628):  at dalvik.system.NativeStart.main(Native Method)
04-06 09:59:25.913: E/AndroidRuntime(628): Caused by: java.lang.NullPointerException
04-06 09:59:25.913: E/AndroidRuntime(628):  at com.game.example.WeaponActivity.setupActionBar(WeaponActivity.java:103)
04-06 09:59:25.913: E/AndroidRuntime(628):  at com.game.example.WeaponActivity.onCreate(WeaponActivity.java:38)
04-06 09:59:25.913: E/AndroidRuntime(628):  at android.app.Activity.performCreate(Activity.java:5008)
04-06 09:59:25.913: E/AndroidRuntime(628):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
04-06 09:59:25.913: E/AndroidRuntime(628):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
04-06 09:59:25.913: E/AndroidRuntime(628):  ... 11 more

3 个答案:

答案 0 :(得分:0)

确保您的清单中的应用程序主题正确。

<application android:label="@string/app_name" android:icon="@drawable/icon" android:theme="@style/Theme.Holo">

确认您已将新活动添加到清单中,并且尚未覆盖该主题。

答案 1 :(得分:0)

我删除了方法setupActionBar()和相关代码,但它确实有效。

 @TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void setupActionBar() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        getActionBar().setDisplayHomeAsUpEnabled(true);
    }
}

有更好的解决方案吗?

答案 2 :(得分:0)

正如@Bill Mote所说,我遇到了同样的问题(在setupActionBar()上有NullPointerException)我通过更改AndroidManifest.xml文件中的主题修复了这个问题:

<application
...
android:theme="@android:style/Theme.Black

android:theme="@android:style/Theme.Holo

然后一切都很好。