0

I am building an app where one can view lists of movies and watch the trailer. I am using a third party youtube player and data binding, here is my xml code

<layout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">


<data>
    <variable
        name="videoID"
        type="String"
        />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".views.TrailerActivity">


    <com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView
        android:id="@+id/trailer_player"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:videoId="@={videoID}"
        app:autoPlay="true"
        app:showFullScreenButton="false" />

    <Button
        android:id="@+id/play_trailer_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/play"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/trailer_player" />

</androidx.constraintlayout.widget.ConstraintLayout>

Here is my TrailerActivity

package com.decagon.moviehut.views

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.ViewModelProviders
import com.decagon.moviehut.R
import com.decagon.moviehut.controllers.repositories.URLRepository
import com.decagon.moviehut.databinding.ActivityTrailerBinding
import com.decagon.moviehut.viewmodels.TrailerViewModel
import com.google.android.youtube.player.YouTubeBaseActivity
import com.google.android.youtube.player.YouTubeInitializationResult
import com.google.android.youtube.player.YouTubePlayer
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.listeners.AbstractYouTubePlayerListener
//import com.google.android.youtube.player.YouTubePlayerView
import com.pierfrancescosoffritti.androidyoutubeplayer.core.player.views.YouTubePlayerView
import kotlinx.android.synthetic.main.activity_trailer.*
    import kotlin.properties.Delegates

class TrailerActivity : AppCompatActivity() {

    private lateinit var playerView: YouTubePlayerView
    private lateinit var viewModel: TrailerViewModel
    private lateinit var player: YouTubePlayer

    private lateinit var binding: ActivityTrailerBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = DataBindingUtil.setContentView(this, R.layout.activity_trailer)

        playerView = findViewById<YouTubePlayerView>(R.id.trailer_player)
        viewModel = TrailerViewModel(this.application)
        val id = intent.getIntExtra("movie_id", 0)
        val videoID = viewModel.getKey(id)

        lifecycle.addObserver(playerView);

        binding.videoID = videoID

        playerView.addYouTubePlayerListener(object: AbstractYouTubePlayerListener(){
            override fun onReady(youTubePlayer: com.pierfrancescosoffritti.androidyoutubeplayer.core.player.YouTubePlayer) {
               // youTubePlayer.loadVideo(videoID, 0f)
            }
        })

    }
}

When I try to build I get the following build error

> Task :app:kaptDebugKotlin
ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.1ANTLR Runtime version 4.5.3 used for parser compilation does not match the current runtime version 4.7.1ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.1ANTLR Runtime version 4.5.3 used for parser compilation does not match the current runtime version 4.7.1C:\Users\HP\Documents\Android Studio Projects\Kotlin\MovieHut\app\build\generated\source\kapt\debug\com\decagon\moviehut\DataBinderMapperImpl.java:9: error: cannot find symbol
import com.decagon.moviehut.databinding.ActivityTrailerBindingImpl;
                                       ^
  symbol:   class ActivityTrailerBindingImpl

> Task :app:kaptDebugKotlin FAILED
  location: package com.decagon.moviehut.databinding
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
   > java.lang.reflect.InvocationTargetException (no error message)

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

I suspect the problem might be from the interaction between data binding and the youtube player

cranium44
  • 13
  • 3

1 Answers1

0

Here you can find Right answer..

How to use kotlin.Int in databinding?

Please check this link!!

  • thanks for the answer but I just quit using the data binding and set the value programmatically. thanks anyway – cranium44 Mar 21 '20 at 21:40