Подтвердить что ты не робот

ActionBar pre Honeycomb

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

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

Спасибо за любую помощь и у вас отличный день.

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

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

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

Ответ 3

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

Ответ 4

В Руководстве API для панели действий говорится:

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

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

Затем в Eclipse:

  • Перейдите в меню "Файл" > "Создать" > "Проект"
  • Android > Проект Android для Android
  • Проверьте Android 4.1
  • Выберите ActionBarCompat

Ответ 5

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

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

Ответ 6

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