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.
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:
And also all the references in the code regarding that title bar, like this one:
Why does this solve it? still don't know. It may be useful for me if someone can explain it.
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"
Using
android:windowNoTitle
withtrue
is hiding yourActionBar
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 theonCreate()
of your activity.