В чем разница между android.support.v4.app.fragment и androidx.fragment.app.FragmentActivity - PullRequest
1 голос
/ 03 октября 2019

очевидно, что есть X под import androidx.fragment.app.FragmentActivity, когда я пытаюсь создать фрагмент Activity. Однако, когда я ищу пример проекта, он импортирует android.support.v4.app.fragment. Могу ли я узнать, в чем разница, и почему у меня возникает следующая ошибка при попытке запустить собственный проект?:

java.lang.ClassCastException: com.fragmenttest.helloapp.ui.collection.ViewPagerIndicatorActivity cannot be cast to androidx.fragment.app.Fragment.

Ответы [ 3 ]

1 голос
/ 03 октября 2019

android.support.v4.app.fragment это пакет для старых фрагментов поддержки Android.

androidx.fragment.app.FragmentActivity это место, где находятся новые фрагменты. Это пришло на смену предыдущему пакету, потому что это намного более чистое пространство имен. Это также известно как Android X.

Возможно, примеры, которые вы видите, старые и все еще используют старый пакет. Если я не ошибаюсь, Androidx был представлен 1 или 2 года назад.

В большинстве случаев вы можете просто заменить импорт, но я думаю, что лучше всего использовать Android Studio для перехода на Androidx * 1010. *

0 голосов
/ 03 октября 2019

Activity! = Fragment, ваш java.lang.ClassCastException предполагает, что вы хотите разыграть Fragment на Activity

Activity в полноэкранном режиме (в основном), Fragment - этотолько часть взгляда, вид очень расширенный View. Один Activity может обрабатывать несколько Fragment с, например, на больших экранах .

FragmentActivity был представлен в пакете поддержки для обработки всех функций Fragment s в более низких версиях ОС, теперь вы должны использовать AppCompatActivity which extends FragmentActivity

0 голосов
/ 03 октября 2019

Прежде всего вы используете разные библиотеки.

android.support.v4.app.* включено в библиотеки поддержки .
androidx.fragment.app.* включено в библиотеки androidx .

Они не могут работать вместе. Проверьте информацию на migrate .

Тогда Activity (или подклассы) не a Fragment.
Вы не можетеразыграйте Фрагмент в Деятельности.

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