android.support.v7.app.AppCompatActivity
был добавлен в последнюю версию библиотеки поддержки v7 как новая функция вчера.
Говорят, что ActionBarActivity
он устарел в пользу нового AppCompatActivity
и AppCompatActivity
является базовым классом для действий, использующих функции панели действий библиотеки поддержки. Итак, что нового в AppCompatActivity
более чем ActionBarActivity
? Какие улучшения AppCompatActivity
имеют более ActionBarActivity
? И в чем преимущества AppCompatActivity
? Может ли кто-нибудь предоставить несколько образцов?
Любые советы приветствуются. И заранее спасибо.
PS: что меня больше всего удивило, так это то, AppCompatActivity
что от него android.support.v4.app.FragmentActivity
является прямой родительский класс ActionBarActivity
! Я имею в виду на самом деле сейчас, что ActionBarActivity
может сделать все, что AppCompatActivity
может, почему Android вытолкнул последний?
Между тем, я увидел сообщение в блоге, в котором говорится: « Это не переименование из ActionBarActivity
в AppCompatActivity
, внутренняя логика AppCompat
доступна черезAppCompatDelegate
», так в чем же « внутренняя логика » AppCompat
? Что можно AppCompatDelegate
сделать? Может ли кто-нибудь опубликовать некоторые коды об этом?
Ответы:
Как писал Крис, новая устаревшая версия
ActionBarActivity
(расширяющегоAppCompatActivity
класс) безопасна для использования класса обратной совместимости. Его устаревание - просто подсказка для того, чтобы вы просили использовать новоеAppCompatActivity
напрямую.AppCompatActivity
это новая, более общая реализация, которая используетAppCompatDelegate
класс внутри.Если вы начинаете новую разработку, вам лучше сразу использовать новый
AppCompatActivity
класс. Если у вас есть возможность обновить свое приложение, то замените также устаревшимActionBarActivity
новым действием. В противном случае вы можете остаться с устаревшей деятельностью, и в поведении не будет никакой разницы вообще.Что касается
AppCompatDelegate
, это позволяет вам иметь новые тонированные виджеты в деятельности, которая не являетсяAppCompatActivity
ниActionBarActivity
.Например, вы наследуете действие от внешней библиотеки, которая, в свою очередь, не наследует,
AppCompatActivity
но вы хотите, чтобы у этого действия были виджеты (представления) с тонированными материалами. Чтобы это произошло, вам нужно создать экземплярAppCompatDelegate
внутри вашей деятельности, переопределить методы этой активности, напримерaddContentView()
иsetContentView()
т. Д. (AppCompatDelegate
Полный список методов см. В javadoc), и внутри этих переопределенных методов переадресовать вызовы во внутреннийAppCompatDelegate
экземпляр.AppCompatDelegate
сделает все остальное, и ваша «старомодная» деятельность будет «материализована».источник
В основном это смена имени: на
ActionBarActivity
самом деле не описывает все, что делает сейчас. Вы можете безопасно использовать,ActionBarActivity
если хотите. Думайте об этом как символическая ссылка.источник
AppCompatActivity
Является ли прямой родительский классActionBarActivity
, теперь, которыйActionBarActivity
может делать все, чтоAppCompatActivity
может, почемуAndroid
вытолкнул позже?ActionBarActivity
когда он удаляется из библиотеки поддержки (например, при обновлении вашего приложения), я бы рекомендовал избегать его использования с этого момента.http://android-developers.blogspot.it/2015/04/android-support-library-221.html
источник
AppCompatActivity
был введен в Android-SDK с момента выпуска библиотеки приложений для Android .AppCompatActivity
является прямым дочерним классомFragmentActivity
поддержки v4 и прямым родительским классомActionBarActivity
.AppCompatActivity
является базовым классом для действий, использующих функции панели действий библиотеки поддержки .Вы можете добавить
ActionBar
к своей деятельности при работе на уровне API 7 или выше , расширив этот класс для своей деятельности и задав тему темы для Theme.AppCompat или аналогичную тему.Что касается поддержки библиотеки appcompat версии 7, в нее добавлена поддержка шаблона проектирования пользовательского интерфейса Action Bar . Эта библиотека включает поддержку реализаций пользовательского интерфейса дизайна материалов .
Вот несколько ключевых классов, включенных в библиотеку appcompat v7:
ActionBar
- Обеспечивает реализацию шаблона интерфейса пользователя панели действий.AppCompatActivity
- Добавляет класс активности приложения, который можно использовать в качестве базового класса для действий, использующих реализацию панели действий библиотеки поддержки .AppCompatDialog
- Добавляет класс диалога, который можно использовать в качестве базового класса для тематических диалогов AppCompat .ShareActionProvider
- Добавлена поддержка стандартизированного действия по обмену (например, электронной почты или публикации в социальных приложениях), которое можно включить в панель действий.После загрузки библиотек поддержки Android эта библиотека находится в каталоге / extras / android / support / v7 / appcompat / .
источник
android.support.v4.app.ActivityCompat
? Это просто старое имяAppCompatActivity
?Раньше единственная точка входа
AppCompat
была через устаревшийActionBarActivity
класс. К сожалению, это заставило вас использовать установленную иерархию Activity, которая делалаPreferenceActivity
невозможным использование таких вещей .см. chris banes's support-library-v22-1-0 для получения дополнительной информации
источник
Последний выпуск андроид библиотеки поддержки, 22.1, уменьшает значимость
ActionBarActivity
в пользуAppCompatActivity
, которая обещает принести один последовательныйActionBar
для всех устройств , начиная с API Level 7 и вышеисточник