Фрагмент поддержки плеера Youtube больше не работает на Android studio 3.2 (androidx) - PullRequest
0 голосов
/ 30 сентября 2018

Я только что обновил свою Android Studio до версии 3.2 и следовал инструкциям по использованию androidx.

Я использовал фрагмент Youtube внутри действия Fragment, и все работало отлично, но после обновления эти 3 простыхтеперь строки выдают ошибку «Не удается разрешить метод add (...)»:

YouTubePlayerSupportFragment youTubePlayerFragment = YouTubePlayerSupportFragment.newInstance();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.youtube_fragment, youTubePlayerFragment).commit();

... и когда я пытаюсь использовать «заменить» вместо «добавить», он говорит: «Неправильный тип аргумента 2. Найдено: 'com.google.android.youtube.player.YouTubePlayerSupportFragment', обязательно: 'androidx.fragment.app.Fragment' "

..., что заставляет меня думать, что проблема имеетделать с новой функцией AndroidX.

Проблема в том, что метод add хочет второй параметр типа:

androidx.fragment.app.Fragment

... но YouTubePlayerSupportFragment возвращает:

android.support.v4.app.Fragment

Кто-нибудь знает, как решить эту проблему?Есть ли способ преобразовать "android.support.v4.app.Fragment" в "androidx.fragment.app.Fragment"?

Ответы [ 3 ]

0 голосов
/ 23 июня 2019

Просто скопируйте исходный файл Java (com.google.android.youtube.player.YouTubePlayerFragment) в ваш проект в тот же пакет, но с другим именем класса и т. Д. com.google.android.youtube.player.YouTubePlayerFragmentX, и обновите класс extends с android.app.Fragment до androidx.fragment.app.Fragment.

Реализация такая же:

YouTubePlayerFragmentX youTubePlayerFragment = YouTubePlayerFragmentX.newInstance();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.youtube_fragment, youTubePlayerFragment).commit();

Проверено ... работает.

0 голосов
/ 11 августа 2019

Я исправил это, следуя ответу @Hosszful, я упростил его, просто используя этот файл, https://gist.github.com/medyo/f226b967213c3b8ec6f6bebb5338a492

0 голосов
/ 08 октября 2018

Просто используйте transaction.replace.Проигнорируйте ошибку, это будет работать.Google еще не реорганизовал библиотеку API YouTube для androidx.

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