Android获取支持操作栏始终返回NULL

时间:2014-02-03 19:30:22

标签: android nullpointerexception android-support-library

我正在某个项目上使用支持库v7。我正试图像这样实例化支持操作栏:

ActionBar actionBar = getSupportActionBar();

    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
    actionBar.setCustomView(R.layout.top_action_bar);
    actionBar.setDisplayShowCustomEnabled(true);
    actionBar.setHomeButtonEnabled(true);

在Android lvl低于11的Android设备上,一切正常。但是,在尝试在较新的设备上运行相同的代码时,例如带有Android 4+的Samsung Galaxy S4,getSupportActionBar()始终返回null,从而导致预期的崩溃。 我正在使用这个样式文件:

<style name="my_style" parent="@style/Theme.AppCompat.Light">
    <item name="android:actionBarStyle">@style/my_style_ab</item>
    <item name="android:windowNoTitle">true</item>

</style>

<style name="my_style_ab" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <item name="android:height">70dp</item>
</style>

关于可能出错的任何提示?我认为它与样式有关,或者我可能无法在上面的API lvl上使用支持ActionBar。提前感谢。

4 个答案:

答案 0 :(得分:9)

android:windowNoTitletrue一起使用会隐藏您的ActionBar

答案 1 :(得分:6)

我得到了解决方案。我没有在问题中提供足够的信息,因此其他人可能很难提供帮助。但是,我不知道为什么会出现这个问题,我只是想知道如何解决它。该错误是由于应用程序标题。我从样式中删除了这个项目:

        <item name="android:windowNoTitle">true</item>

以及代码中关于该标题栏的所有引用,如下所示:

  requestWindowFeature(Window.FEATURE_NO_TITLE);

为什么要解决这个问题?还是不知道。如果有人能够解释它,它可能对我有用。

答案 2 :(得分:2)

如果您使用的是工具栏和AppCompat,那么您可能将android:windowNoTitle设置为true,隐藏操作栏。在xml中创建工具栏,并在活动的onCreate()中添加此代码。

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

答案 3 :(得分:1)

在Manifest文件中,检查您遇到问题的活动。 我的主题是&#34; NoActionBar&#34;属性。

删除它已解决此代码对我有用。

android:theme="@style/AppTheme.NoActionBar"