【发布时间】:2020-03-07 04:42:24
【问题描述】:
我正在构建一个应用程序,人们可以在其中查看电影列表并观看预告片。我正在使用第三方 youtube 播放器和数据绑定,这是我的 xml 代码
<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>
这是我的 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)
}
})
}
}
当我尝试构建时,出现以下构建错误
> 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.
我怀疑问题可能来自数据绑定和 youtube 播放器之间的交互
【问题讨论】:
标签: android kotlin data-binding