ActionBar pre Honeycomb - PullRequest
       11

ActionBar pre Honeycomb

13 голосов
/ 11 июля 2011

Я пишу приложение для Android (2.1> 3.1), и я хотел бы использовать привычную практику использования значка приложения в приложениях Honeycomb, чтобы перейти к домашней активности, однако, когда я запускаю действие ранее, не сотовые устройства, где Activity.getActionBar (); метод еще не существует, приложение принудительно закрывается, как я могу запустить указанный код, только если устройство работает в сотовом режиме?

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

Спасибо за любую помощь и хорошего дня.

Ответы [ 7 ]

68 голосов
/ 11 июля 2011

Я написал библиотеку для Android, которая автоматически объединит ваши действия до версии 3.0 с пользовательской реализацией шаблона проектирования панели действий.Затем вы можете вызвать getSupportActionBar(), который предоставит общий интерфейс для собственной и пользовательской реализаций, в зависимости от того, на какой версии Android работает ваше приложение.

Библиотека также позволяет применять пользовательские стили к обоимиз этих панелей действий в одной теме.

Более подробную информацию, а также скриншоты примеров приложений можно найти на actionbarsherlock.com .

Библиотека на 100%с открытым исходным кодом и доступны на github.com / JakeWharton / ActionBarSherlock .

13 голосов
/ 11 июля 2011

Предварительно Honeycomb Android не имеет ActionBar, поэтому любой метод, касающийся actionBar, просто потерпит неудачу. Вы должны взглянуть на код из приложения Google IO , которое использует ActionBar как для сотовых, так и для предварительных сот.

Проще говоря, он не будет работать сам по себе, вам придется включить собственный код ActionBar.

4 голосов
/ 25 июля 2012

Из руководства по API для Панель действий написано:

Пример приложения Action Bar Compatibility предоставляет слой API и макет панели действий, которые позволяют вашему приложению использовать некоторые из API-интерфейсов ActionBar, а также поддерживают более старые версии Android, заменив традиционную строку заголовка настраиваемым макетом панели действий.

Вы можете получить это, установив образцы Android 4.1 (API 16).

Затем в Eclipse:

  1. Перейдите в Файл> Создать> Проект
  2. Android> Пример Android-проекта
  3. Проверка Android 4.1
  4. Выберите ActionBarCompat
4 голосов
/ 11 июля 2011

Так как actionbar не существует в предварительно сотах, вам придется обходиться чем-то другим.Одним из предложений будет использование библиотеки панели действий johannilssons, которую можно найти на github.Прямая ссылка: https://github.com/johannilsson/android-actionbar

3 голосов
/ 28 августа 2013

Начиная с версии 18, Библиотека поддержки Android содержит поддержку ActionBar до API уровня 7. Теперь это рекомендуемый способ поддержки ActionBar для всех версий Android начиная с версии 2.1 и значительно более простой в использовании. чем сторонние библиотеки или другие хаки.

3 голосов
/ 11 июля 2011

Мне нравится использовать панель действий GreenDroids (плюс они включают в себя некоторые другие красивые вещи): http://android.cyrilmottier.com/?p=240

3 голосов
/ 11 июля 2011

Я думаю, что код не требует пояснений

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;
  }
...