Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android get Support Action Bar always returns NULL

I'm using the support library v7 on a certain project. I'm trying to instantiate the support action bar like this:

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);

Everything works fine on Android devices with API lvl below 11. However, while trying to run the same code on newer devices, like a Samsung Galaxy S4 with Android 4+, getSupportActionBar() always returns null, causing the expected crash. I'm using this style file:

<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>

Any hints on what may be wrong? I think it has something to do with the style, or maybe I just can't use the support ActionBar on API lvl above 11. Thanks in advance.

like image 674
MetalCraneo Avatar asked Feb 03 '14 19:02

MetalCraneo


4 Answers

Using android:windowNoTitle with true is hiding your ActionBar

like image 96
michal.luszczuk Avatar answered Nov 06 '22 03:11

michal.luszczuk


I got the solution. And I didn't provide enough information in the question so it may be hard for others to help. However, I don't know why the problem happens, I just found out how to solve it. The error was due to the app title. I removed this item from the style:

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

And also all the references in the code regarding that title bar, like this one:

  requestWindowFeature(Window.FEATURE_NO_TITLE);

Why does this solve it? still don't know. It may be useful for me if someone can explain it.

like image 32
MetalCraneo Avatar answered Nov 06 '22 03:11

MetalCraneo


If you are using Toolbar and AppCompat then you probably have android:windowNoTitle set to true, hiding your action bar. Create a Toolbar in your xml and add this code in the onCreate() of your activity.

Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
like image 3
androidtitan Avatar answered Nov 06 '22 04:11

androidtitan


Inside Manifest file, check the activity for which are you having the issue. I have the theme with "NoActionBar" Property.

Removing it resolved this code worked for me.

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

like image 1
Akshay Avatar answered Nov 06 '22 03:11

Akshay