Я пишу приложение для 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:
Я думаю, что код не требует пояснений
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 и значительно проще в использовании, чем сторонние библиотеки или другие хаки.