I am trying to use the BluetoothChat sample code as a base for an application I am working on. I don't understand why my android.app.ActionBar import isn't working. Eclipse doesn't seem to recognize it. My project build target is the Google API 2.3.1.
Can someone explain to me what I am doing wrong? I don't know how specific I should be so if more info would help you answer my question, please ask me.
android.app.ActionBar works only on 3.0 level 11 API
As mentioned in the android blog available here
Beginning with Android 3.0 (API level 11), the action bar appears at
the top of an activity's window when the activity uses the system's
Holo theme (or one of its descendant themes), which is the default.
You may otherwise add the action bar by calling
requestFeature(FEATURE_ACTION_BAR) or by declaring it in a custom
theme with the windowActionBar property.
Related
I've been trying out implementing navigation in android through navigation drawers and swipe views with tabs.
I've followed Google's developer tutorials (here and here) and for both situations I could never get my code to work unless I changed Activity or FragmentActivity to AppCompatActivity and applied other changes in the action bars code, for instance change getActionBar to getSupportActionBar so I don't get NPE.
Now the questions:
1- Why do I need to make these changes when I'm following official tutorials that should work the way they are?
2 - Is AppCompatActivity correct to use in these cases or is there a better way to do the same thing?
3 - Are these situations related to the min sdk and target sdk I chose? My min sdk is 14 and my target sdk is 22. Should I try to lower the target sdk?
4 - Are these situations related to the style/theme of my application? It's android:theme="#style/AppTheme" > .
Some insight on this subject is appreciated so thank you in advance.
Edit: Another thing I noticed is that I always need to import android.support.v7.app.ActionBar instead of android.app.ActionBar so I don't get NPE, even though my min sdk is higher than API 11.
Edit2: I noticed some contradiction in the developers' guides. Because I want to use ActionBar, I need to get my imports right. Following this link, it's recommended that I include v7 appcompat libraries, but following this one I need to import android.app.ActionBar because my min sdk is higher than 11. Like I said before, using android.app.ActionBar produces NPE, so what should I do?
I have made a programm based on SDK 7. Now I want to add an Actionbar to it. I changed the minSDK to 11 in the Manifest. Isn't that supposed to change the design of the layouts I already have?
Problem is, that I get returned "null" by getActionbar(). I read, that I have to activate the title bar in the OnCreate of the mainactivity. But that does'nt change anything, still "null".
I can see the titlebar, but on SDK 7 it's smaller than on SDK 11. Can't really describe my problem. I just want to use Actionbar on my old written App. But the Layout still looks like in the pic below (left).!
LayoutProblems
Hope someone can help me.
Thanks!
You should also replace the old android.jar with the new one from SDK 11 to get the new GUI. If you are using eclipse for development, just check different Project buid target under Project - Properties - Android.
If you want to use ActionBar in older devices you must use actionbar support library which is provided with the sdk.
I am new to android. My minimum API level needs to be 7, so that I can test the app on my htc hero. My target API level is 17.
The error concerns the actionbar. Some code is added by eclipse and I guess I need it to propperly run my app on the latest android versions:
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar() gives NPE on API 7, but not on API 17. How do I solve this without deleting the code (which I will presumably need for modern API levels)?
Basically, You need to follow this. If You need some good example, I think Android IO app source might be a good example on how to develop taking care about form-factor, API level etc. during runtime (however, it might be little bit difficult for completely new to android)
Action bar is not supported in any pre-honeycomb versions so any method related to action bar will not get executed....but after searching SO i came across this brilliant thing...
just check this out...
You can find out more information as well as screenshots of sample applications at link
The library is 100% open source and available at check this
from below question...
ActionBar pre Honeycomb
i think your device have android version 2.1 thats why you get error.
just add this actionbarsherlock lib to your Project.
after that just change this line
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
check this tutorials link and link
I have an Android application that targets API 17 and has a minimum SDK version of 8. I'm not interested in providing the ActionBar in devices with Android API < 11, but I'd like to use in the devices running Android >= 3.0.
Browsing stackoverflow in order to learn how to do so, I stumbled upon this question: How to code backward compatible new feature in Android SDK?. I wanted to use the implementation provided in its answer, but I can't import android.app.ActionBar. Eclipse would not recognise it.
What could be the problem? Thanks in advance.
Make sure that your project is referencing the android.jar file for the target, rather than the minimum SDK.
In eclipse, right click project -> Build Path -> Configure Build Path, and see which Android version is referenced there.
Why not use action bar sherlock ?
As mentioned here
Beginning with Android 3.0 (API level 11), the action bar appears at
the top of an activity's window when the activity uses the system's
Holo theme (or one of its descendant themes), which is the default.
You may otherwise add the action bar by calling
requestFeature(FEATURE_ACTION_BAR) or by declaring it in a custom
theme with the windowActionBar property.
There is a new concept in Android:
http://android-developers.blogspot.com/2012/01/say-goodbye-to-menu-button.html
But it isn't clear fro me. I have an application which is support from 1.6 to 4.0. And I want to follow the new concept, but I can't set showAsAction property in the menu xml because:
"No resource identifier found for attribute 'showAsAction' in package 'android'"
It's normal because there is in the doc:
"Note: The android:showAsAction attribute is available only on Android 3.0 (API Level 11) and greater."
How can I set the menu, that under 3.0 is a simple menu but over 3.0 as an ActionBar?
Per the blog post that you shared:
Summary
Android no longer requires a dedicated Menu button, some devices don’t have one, and you should migrate away from using it.
Set targetSdkVersion to 14, then test your app on Android 4.0.
Add showAsAction="ifRoom" to menu items you’d like to surface in the action bar.
If the ActionBar doesn’t work for your app, you can remove it with Theme.Holo.NoActionBar or Theme.DeviceDefault.NoActionBar.
So, all you really have to do is this:
First, set your SDK min and target version in the AndroidManifest.xml file like this:
<uses-sdk
android:minSdkVersion="4"
android:targetSdkVersion="14" />
Second, add showAsAction="ifRoom" to the menu items in your menu.xml file.
Now run your app in Honeycomb or Ice Cream Sandwich and you should see your menu in the action bar. Your app should still work for the pre Android 3.0 releases.
Go to project properties in Eclipse (right-click on project and select Properties),
then go to Android section, and change Project Build Target to Android 4.0. This must be done so that the build system recognizes showAsAction.
Don't worry that your project won't be runnable on Android less than 4.0, you can still run it as long as you don't call a class or method available only on 4.0.
You can use Build.VERSION to do something different in every versions。
Some like Build.VERSION.SDK_INT<Build.VERSION_CODES.HONEYCOMB
You can use some os technology to provide actionbar in apps with API level less then 11.
Consider using ActionBarSherlock. You can just add it as library project to your project and if you won't set the Sherlock theme it won't show action bar(in case you don't want to show it), yet you can mark your menuitems with "showAsAction". On devices with API level higher than 10, action bar with your menuitems will be normally shown.