ActionBar pre Honeycomb

时间:2011-07-11 05:38:18

标签: android android-actionbar android-version onstart

我正在为android(2.1> 3.1)编写一个应用程序,我想使用熟悉的做法,在Honeycomb应用程序中使用应用程序图标进行家庭活动,但是,当我在早些时候运行活动时,非Honeycomb设备里的Activity.getActionBar();方法尚不存在,app force关闭,如果设备运行蜂窝,我怎么才能运行这个指定的代码?

@Override
protected void onStart() {
    super.onStart();
    ActionBar actionBar = this.getActionBar();
    actionBar.setDisplayHomeAsUpEnabled(true);
}

感谢您的帮助,祝您度过愉快的一天。

7 个答案:

答案 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中:

  1. 转到文件>新>项目
  2. Android> Android示例项目
  3. 检查Android 4.1
  4. 选择ActionBarCompat

答案 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的推荐方法,并且比第三方库更容易使用或其他黑客。