Reputation: 335
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.
Upvotes: 11
Views: 16014
Reputation: 671
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);
Upvotes: 4
Reputation: 373
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"
Upvotes: 1
Reputation: 335
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.
Upvotes: 7
Reputation: 2903
Using android:windowNoTitle
with true
is hiding your ActionBar
Upvotes: 11