ActionBar pre Honeycomb

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

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

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

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

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

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

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

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

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

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

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

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

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

Затем в Eclipse:

  1. Откройте Файл> Создать> Проект
  2. Android> Android Пример проекта
  3. Проверить Android 4.1
  4. Выберите ActionBarCompat

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

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

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

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