Несоответствие типов: предполагаемый тип - Fragment, но ожидался YouTubePlayerSupportFragment - PullRequest
2 голосов
/ 16 июня 2019

Я продолжаю получать эту ошибку, так как я обновил свою Android Studio.Вот мой activity_main.xml (Соответствующая часть)

<fragment
            android:id="@+id/youtube_player_fragment"
            android:name="com.google.android.youtube.player.YouTubePlayerSupportFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>

Вот мой MainActivity.kt

lass MainActivity : AppCompatActivity()
{
    lateinit var youTubePlayerSupportFragment: YouTubePlayerSupportFragment
    lateinit var youTubePlayer: YouTubePlayer


    override fun onCreate(savedInstanceState: Bundle?)
    {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        initializeYoutubePlayer()
    }


    private fun initializeYoutubePlayer()
    {
        youTubePlayerSupportFragment = supportFragmentManager.findFragmentById(R.id.youtube_player_fragment) //<-- I get ERROR in this line

    }
}

1 Ответ

1 голос
/ 16 июня 2019

Вы можете использовать оператор приведения as при установке youTubePlayerSupportFragment.По умолчанию findFragmentById возвращает объект типа Fragment:

...
private fun initializeYoutubePlayer() {
    youTubePlayerSupportFragment = supportFragmentManager.findFragmentById(R.id.youtube_player_fragment) as YouTubePlayerSupportFragment
}
...

Более простой вариант - использовать Fragment напрямую по его идентификатору, поскольку он уже определен в файле xml:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    //your Fragment is bound at this point
    assert youtube_player_fragment != null
}
...