ActionBarActivity getSupportActionBar().hide()抛出NullPointerException

Abi*_*bi- 4 java android nullpointerexception android-support-library android-actionbar-compat

呼叫

 if (getSupportActionBar() != null)
     getSupportActionBar().hide();
Run Code Online (Sandbox Code Playgroud)

要不就:

getActionBar()
Run Code Online (Sandbox Code Playgroud)

在android.support.v7.app.ActionBarActivity中,我得到了这样的异常:

    ...
    java.lang.NullPointerException
    at android.support.v7.app.ActionBarImplICS.hide(ActionBarImplICS.java:302)
    at android.support.v7.app.ActionBarImplJB.hide(ActionBarImplJB.java:20)
    ...
Run Code Online (Sandbox Code Playgroud)

编辑: 它只是在活动有主题时发生:

<style name="MyTheme" parent="Theme.AppCompat.Light">
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowFullscreen">false</item>
    </style>
Run Code Online (Sandbox Code Playgroud)

注意:

getSupportActionBar()
Run Code Online (Sandbox Code Playgroud)

不要返回null

rui*_*dge 6

遇到同样的问题,但我使用代码在下面设置全屏和noActionbar而不是xml中的主题:

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getSupportActionBar().hide();
    setContentView(R.layout.page_welcome);
    initViews();
}
Run Code Online (Sandbox Code Playgroud)

这段代码在ICS之前运行良好,但由于ICS之上的NullPointException导致崩溃,经过一些实验,我得到了解决方案:删除一行代码,不设置标题如下:

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    // requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getSupportActionBar().hide();
    setContentView(R.layout.page_welcome);
    initViews();
}
Run Code Online (Sandbox Code Playgroud)

然后它适用于所有平台.:)


gun*_*nar 0

同时拥有Theme.AppCompat.LightICS 前和 ICS 后肯定会引起问题。这样做的方法是设置一个MyTheme

  1. values/styles.xml。这将从 开始延伸Theme.AppCompat.Light。前任:<style name="MyTheme" parent="Theme.AppCompat.Light">
  2. values-v11/styles.xml。这将从一个Holo主题延伸出来。前任:<style name="MyTheme" parent="android:Theme.Holo.Light">

这样,Android 根据运行时设备主机 API 知道要加载什么样的主题。

getActionBar()一旦您从 延长,请勿再打电话ActionBarActivity。在 ICS 后的设备上,这将运行,但对于较低的 API 设备,您将收到运行时异常not supported method或类似的异常。