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
遇到同样的问题,但我使用代码在下面设置全屏和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)
然后它适用于所有平台.:)
同时拥有Theme.AppCompat.LightICS 前和 ICS 后肯定会引起问题。这样做的方法是设置一个MyTheme:
values/styles.xml。这将从 开始延伸Theme.AppCompat.Light。前任:<style name="MyTheme" parent="Theme.AppCompat.Light">values-v11/styles.xml。这将从一个Holo主题延伸出来。前任:<style name="MyTheme" parent="android:Theme.Holo.Light">这样,Android 根据运行时设备主机 API 知道要加载什么样的主题。
getActionBar()一旦您从 延长,请勿再打电话ActionBarActivity。在 ICS 后的设备上,这将运行,但对于较低的 API 设备,您将收到运行时异常not supported method或类似的异常。