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