我正在为android(2.1> 3.1)编写一个应用程序,我想使用蜂窝应用程序中使用应用程序图标的熟悉做法去到家庭活动,然而,当我在较早的非蜂窝设备上运行activity . getactionbar ();方法还不存在,应用程序强制关闭,如果设备正在运行蜂巢,我怎么才能只运行指定的代码?
@Override
protected void onStart() {
super.onStart();
ActionBar actionBar = this.getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
谢谢你的帮助,祝你有美好的一天。
我已经为Android写了一个库,它将自动包装你的3.0以前的活动与自定义实现的操作栏设计模式。然后你可以调用getSupportActionBar()
,它将为本地和自定义实现提供一个公共接口,这取决于你的应用程序运行在哪个版本的Android上。
该库还允许您通过单个主题对这两个操作栏应用自定义样式。
你可以在actionbarsherlock.com找到更多的信息以及示例应用程序的截图。
该库是100%开源的,可从github.com/JakeWharton/ActionBarSherlock获得。
Android pre-Honeycomb没有ActionBar,所以任何与ActionBar相关的方法都会失败。你应该看看Google IO应用的代码,它在Honeycomb和pre-Honeycomb中都使用了ActionBar。
简单地说,它不能自己工作,你必须包含你自己的ActionBar代码
从操作栏的API指南中,它说:
操作栏兼容性示例应用程序提供了一个API层和操作栏布局,允许您的应用程序使用一些ActionBar API,并通过使用自定义操作栏布局替换传统的标题栏来支持旧版本的Android。
你可以通过安装Android 4.1 (API 16)示例来获得。
然后在Eclipse中:
- 点击文件>新建>项目
- Android>Android示例项目
- 检查Android 4.1
- 选择ActionBarCompat
由于在pre honeycomb上不存在动作栏,你将不得不使用其他东西。一个建议是使用johannilsson的actionbar库,可以在github上找到。直接链接:https://github.com/johannilsson/android-actionbar
我喜欢使用GreenDroids操作栏(加上它们包括一些其他漂亮的东西):http://android.cyrilmottier.com/?p=240
从第18版开始,Android支持库包含了回至API Level 7的ActionBar支持。这是现在推荐的方式来支持所有版本的Android从2.1起,比第三方库或其他hack更容易使用的ActionBar。
我认为代码是不言自明的
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;
}