В чем разница между android.widget.Toolbar и android.support.v7.widget.Toolbar? - PullRequest
2 голосов
/ 03 апреля 2019

Может кто-нибудь объяснить мне разницу между ними и почему они не взаимозаменяемы?

Импорт android.widget.Toolbar приведет к ошибке компиляции, тогда как импорт android.support.v7.widget.Toolbar работает отличнохорошо.

В чем разница между этими двумя импортами?

import android.widget.Toolbar;

...

Toolbar toolbar = findViewById(R.id.app_bar);

setSupportActionBar(toolbar);

import android.support.v7.widget.Toolbar;

...

Toolbar toolbar = findViewById(R.id.app_bar);

setSupportActionBar(toolbar);

Ответы [ 3 ]

1 голос
/ 03 апреля 2019

Библиотека поддержки (теперь AndroidX ) предназначена для обратной совместимости, в то время как android.widget.Toolbar является текущим типом платформы.
Если вы не знаете, что такое библиотека поддержки, посмотритена этот ответ .
По умолчанию Android Studio заставляет вас использовать AppCompatActivity, которая является частью библиотеки поддержки и, следовательно, ожидает также панель инструментов поддержки.

0 голосов
/ 03 апреля 2019

Почему ошибка компиляции?

Поскольку параметр в setSupportActionBar (панель инструментов) равен

android.support.v7.widget.Toolbar а не

android.widget.Toolbar

Как это проверить?

setSupportActionBar является частью AppCompatActivity. Если вы хотите увидеть этот параметр, просто переопределите метод в вашем Activity и удалите импорт, он укажет, какой класс следует импортировать, чтобы избавиться от ошибки компиляции.

enter image description here

В чем разница?

Это довольно очевидно. Оба являются разными классами, один принадлежит к библиотеке поддержки, а другой - нет.

Сопряжение с AppCompatActivity

Все новые функции продолжают добавляться в библиотеки поддержки, чтобы у вас была одинаковая функциональность на всех уровнях API. Другими словами, библиотеки поддержки постоянно обновляются. Например, рекомендуется использовать android.support.v4.app.Fragment с сопряжением с AppcompatActivity.
Таким образом, совместимость на всех уровнях API может быть причиной.

Точка: если ваша деятельность расширяет AppCompatActivity, тогда используйте

  • android.support.v7.widget.Toolbar
  • android.support.v4.app.Fragment
  • android.support.v7.widget.RecyclerView и т. Д.
0 голосов
/ 03 апреля 2019

когда вы видите v4 Support Libraries знает, что это библиотека поддержки Android для старых устройств с низким уровнем API (обратная совместимость).

Эти библиотеки включают в себя самый большой наборAPI по сравнению с другими библиотеками, включая поддержку компонентов приложения, функции пользовательского интерфейса, специальные возможности, обработку данных, сетевые подключения и утилиты программирования.

Вы можете проверить все библиотеки поддержки здесь

Примечание - вы также можете использовать AndroidX , это новая и улучшенная библиотека поддержки.

AndroidX - значительное улучшение по сравнению с оригинальным AndroidПоддержка библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...