我正在为android(2.1> 3.1)编写一个应用程序,我想使用熟悉的做法,在Honeycomb应用程序中使用应用程序图标进行家庭活动,但是,当我在早些时候运行活动时,非Honeycomb设备里的Activity.getActionBar();方法尚不存在,app force关闭,如果设备运行蜂窝,我怎么才能运行这个指定的代码?
@Override
protected void onStart() {
super.onStart();
ActionBar actionBar = this.getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
感谢您的帮助,祝您度过愉快的一天。
答案 0 :(得分:68)
我已经为Android编写了一个库,它将使用操作栏设计模式的自定义实现自动包装3.0之前的活动。然后,您可以调用getSupportActionBar()
,它将为本机和自定义实现提供通用接口,具体取决于您的应用程序所运行的Android版本。
该库还允许您通过单个主题将自定义样式应用于这两个操作栏。
您可以在actionbarsherlock.com找到更多信息以及示例应用程序的屏幕截图。
该库是100%开源的,可在github.com/JakeWharton/ActionBarSherlock获得。
答案 1 :(得分:13)
Android pre-Honeycomb没有ActionBar,所以关于actionBar的任何方法都会失败。你应该看一下code from the Google IO app,它使用了一个用于Honeycomb和pre-Honeycomb的ActionBar。
简单地说,它本身不起作用,你必须包含你自己的ActionBar代码。
答案 2 :(得分:4)
由于动作栏不存在于预先蜂窝状态,因此您必须使用其他内容。 一个建议是使用johannilssons actionbar库,它可以在github上找到。 直接链接:https://github.com/johannilsson/android-actionbar
答案 3 :(得分:4)
来自Action Bar的API指南,它说:
操作栏兼容性示例应用程序提供了一个API层和操作栏布局,允许您的应用程序使用某些ActionBar API,并通过使用自定义操作栏布局替换传统标题栏来支持旧版Android。
您可以通过installing Android 4.1(API 16)示例获取此内容。
然后在Eclipse中:
答案 4 :(得分:3)
我认为代码是不言自明的
private static int sdkVersion;
static
{
try {
sdkVersion = Integer.parseInt(android.os.Build.VERSION.SDK);
} catch (Exception ex) {
}
}
/** Device support the froyo (Android 2.2) APIs */
public static boolean isAndroid22() {
return sdkVersion >= 8;
}
/** Device support the Gingerbread (Android 2.3) APIs */
public static boolean isAndroid23() {
return sdkVersion >= 9;
}
/** Device supports the Honeycomb (Android 3.0) APIs */
public static boolean isAndroid30() {
return sdkVersion >= 11;
}
答案 5 :(得分:3)
我喜欢使用GreenDroids动作栏(加上其他一些漂亮的东西):http://android.cyrilmottier.com/?p=240
答案 6 :(得分:3)
从版本18开始,Android Support library包含回到API级别7的ActionBar支持。现在,这是从2.1开始为所有Android版本支持ActionBar的推荐方法,并且比第三方库更容易使用或其他黑客。