Какое расширение 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 и выше