I'm having an odd problem. I am making an app with targetsdk 13.
In my main activity's onCreate method i call getActionBar()
to setup my actionbar. This works fine when running on the Android 3.2 emulator, but when using Android 3.0 and 3.1 the getActionBar()
method returns null.
I find this extremely odd, and i cannot see any reason why it would do so. Is this a bug with the emulators or is there something i need to do, in order to ensure that my application has an actionbar?
SOLUTION:
I think I've found a solution for this problem.
I wasn't using the setContentView to set a layout for the activity. Instead I was using fragmentTransaction.add(android.R.id.content, mFragment, mTag)
to add a fragment to the activity.
This worked fine in 3.2, but in earlier honeycomb versions the action bar is apparently not set if you don't use the setContentView in the onCreate()
method.
So I fixed it by using the setContentView()
method in my onCreate()
method and just supplying it with a layout that contained an empty FrameLayout.
I can still use the fragmentTransaction.add(android.R.id.content, mFragment, mTag)
method the same way as before.
It's not the prettiest fix, but it works.
Can use
getSupportActionBar()
instead ofgetActionBar()
method.This may also help some people.
In my case, it was because I had not defined a context in the menu.xml
Try this:
Instead of this:
The main reason for that is using themes that are not supporting ActionBar:
In manifest file add the following either in your target activity or application element (if you want to unify the theme over whole application)
Examples of themes that are supporting action bar
"Theme.AppCompat.Light"
or"Theme.Holo.Light"
...It is better to put all styles in
styles.xml
and use it everywhere using"@style/themName"
so the previous one will beand styles.xml will have the following:
Hints:
"@android:style/Theme.Holo.Light.DarkActionBar"
is not supported before SDKs version 14.To allow your app to support minimum specific version of SDK you could add the following under
<app>
element:To specify min SDK version in AndroidStudio, you could by using app's Gradle file.
I faced the above issue where
getActionBar()
method returns null. I was calling thegetActionBar()
after setting thesetContentView()
and still its returning anull
.I resolved the issue by setting the min-sdk version in Android Manifest file that was missing initially.
<uses-sdk android:minSdkVersion="11" />
You have to define window type as actionbar before activity render its view.
use
before calling setContentView() method.
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
works pretty quickly