getActionBar()setDisplayHomeAsUpEnabled(真)。 在新活动创建时抛出NullPointerException(Google – Basic Tutorial)

我正在遵循本教程并在此代码块的DisplayMessageActivity的onCreate方法中获取NullPointerException:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { // Show the Up button in the action bar. getActionBar().setDisplayHomeAsUpEnabled(true); //Exception here } 

我正在使用NexusOne AVD模板在模拟器上运行应用程序。
当我点击发送按钮并输入一些文字时,我得到了例外。

这是日志:

 09-03 23:02:07.586: E/AndroidRuntime(7095): FATAL EXCEPTION: main 09-03 23:02:07.586: E/AndroidRuntime(7095): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mypackage.myfirstapp/com.mypackage.myfirstapp.DisplayMessageActivity}: java.lang.NullPointerException 09-03 23:02:07.586: E/AndroidRuntime(7095): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 09-03 23:02:07.586: E/AndroidRuntime(7095): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 09-03 23:02:07.586: E/AndroidRuntime(7095): at android.app.ActivityThread.access$600(ActivityThread.java:141) 09-03 23:02:07.586: E/AndroidRuntime(7095): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 09-03 23:02:07.586: E/AndroidRuntime(7095): at android.os.Handler.dispatchMessage(Handler.java:99) 09-03 23:02:07.586: E/AndroidRuntime(7095): at android.os.Looper.loop(Looper.java:137) 09-03 23:02:07.586: E/AndroidRuntime(7095): at android.app.ActivityThread.main(ActivityThread.java:5041) 09-03 23:02:07.586: E/AndroidRuntime(7095): at java.lang.reflect.Method.invokeNative(Native Method) 09-03 23:02:07.586: E/AndroidRuntime(7095): at java.lang.reflect.Method.invoke(Method.java:511) 09-03 23:02:07.586: E/AndroidRuntime(7095): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 09-03 23:02:07.586: E/AndroidRuntime(7095): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 09-03 23:02:07.586: E/AndroidRuntime(7095): at dalvik.system.NativeStart.main(Native Method) 09-03 23:02:07.586: E/AndroidRuntime(7095): Caused by: java.lang.NullPointerException 09-03 23:02:07.586: E/AndroidRuntime(7095): at com.mypackage.myfirstapp.DisplayMessageActivity.onCreate(DisplayMessageActivity.java:40) 09-03 23:02:07.586: E/AndroidRuntime(7095): at android.app.Activity.performCreate(Activity.java:5104) 09-03 23:02:07.586: E/AndroidRuntime(7095): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 09-03 23:02:07.586: E/AndroidRuntime(7095): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 09-03 23:02:07.586: E/AndroidRuntime(7095): ... 11 more 

通过评论此块,应用程序可以成功运行。

为什么抛出NullPointerException?

Related of "getActionBar()setDisplayHomeAsUpEnabled(真)。 在新活动创建时抛出NullPointerException(Google – Basic Tutorial)"

您可能正在使用不支持ActionBar的主题。 因此getActionBar()方法抛出NullPointerException

尝试使用这个主题:

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

尝试将getActionBar()更改为getSupportActionBar()((ActionBarActivity)getActivity()).getSupportActionBar()

我有同样的问题。

在我宣布的清单的活动中

 android:theme="@android:style/Theme.Black.NoTitleBar 

这导致了错误。 删除此行后,我的操作栏工作正常。

它应该没有必要,但即使在API级别14之后,API版本之间也存在一些行为不一致。

行为:

返回“< ”图像,但按下时不起作用。 作为一种好的做法,我用它来实现switch case以处理返回事件。

 @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // Respond to the action bar's Up/Home button case android.R.id.home: NavUtils.navigateUpFromSameTask(this); return true; } return super.onOptionsItemSelected(item); } 

它对我有用。

我在试用android开发者网站上提供的导航抽屉示例应用程序时遇到此错误。 事实certificate, MainActivity没有扩展ActionBarActivity ,因此getActionBar()返回null导致exception。

其他答案都没有对我有用,真的。 我只是评论说整个if它起作用了。 从方法名称( 和文档 ),您无论如何都不需要该function(除非您需要它),因此不会造成任何伤害。

相关文件摘录:

设置是否应将主页显示为“向上”可供性。 如果选择“home”在UI中按单个级别返回而不是返回顶级或首页,则将此设置为true。

要一次设置多个显示选项,请参阅setDisplayOptions方法。

参数

showHomeAsUp true表示用户选择home将返回一级而不是应用程序的顶级。

您必须在Activity中设置一些与Action栏不兼容的主题。

因此,只需在清单文件中 检查您使用的主题 并将其删除即可

或者,如果已定义自定义主题,请转到res- > values- > style.xml并将WindowActionBar设置为true。