在Kotlin设置startActivity()时类型不匹配



我是Android手机Kotlin编程新手。我想尝试从许多教程和Android移动编程学习中为我的实验制作自己的电影列表。

所以,我想尝试让Explicit Intent从电影列表开始其中一个被点击进入我点击的电影信息

在MainActivity中从JSON中获得电影数据集后。我在MainActivity中使用下面的代码。

val customAdapter = MovieAdapter(moviePoster, movieTitle, movieYear, movieGenre, movieDirectors, movieRunTime, movieRating, movieActors, movieOverview, this@MainActivity)
recyclerView.setAdapter(customAdapter)

这是MovieAdapter类(MovieAdapter。kt)

class MovieAdapter(var moviePoster: ArrayList<String>,
var movieTitle: ArrayList<String>,
var movieYear: ArrayList<String>,
var movieGenre: ArrayList<String>,
var movieDirectors: ArrayList<String>,
var movieRunTime: ArrayList<String>,
var movieRating: ArrayList<String>,
var movieActors: ArrayList<String>,
var movieOverview: ArrayList<String>, var ctx: Context) : RecyclerView.Adapter<MovieAdapter.MyViewHolder>()

然后在MovieAdapter。kt (MovieAdapter类),如下面的代码

override fun onBindViewHolder(holder: MyViewHolder, position: Int)
{
holder.moviePoster.tag = moviePoster[position]
holder.movieTitle.text = movieTitle[position]
holder.movieYear.text = movieYear[position]
holder.movieGenre.text = movieGenre[position]

val moviePosterDetail = moviePoster[position]
val movieTitleDetail = movieTitle[position]
val movieYearDetail = movieYear[position]
val movieGenreDetail = movieGenre[position]
val movieDirectorDetail = movieDirectors[position]
val movieTimeDetail = movieRunTime[position]
val movieRatingDetail = movieRating[position]
val movieActorsDetail = movieActors[position]
val movieDescriptionDetail = movieOverview[position]

holder.itemView.setOnClickListener{
Intent(ctx, MovieDetail::class.java).also {
it.putExtra("moviePoster", moviePosterDetail)
it.putExtra("movieTitle", movieTitleDetail)
it.putExtra("movieYear", movieYearDetail)
it.putExtra("movieGenre", movieGenreDetail)
it.putExtra("movieDirector", movieDirectorDetail)
it.putExtra("movieTime", movieTimeDetail)
it.putExtra("movieRating", movieRatingDetail)
it.putExtra("movieActors", movieActorsDetail)
it.putExtra("movieDescription", movieDescriptionDetail)
startActivity(it)
}
}
}

在startActivity(it)部分,在

下面有一个错误

类型不匹配。要求:背景发现:意图参数"intent"没有传递值参数"options"没有传递值

但是在其他文件中,当startActivity(it)部分(在MainActivity。

那么,为什么会发生这种情况,我该怎么做呢?如果我必须在startActivity()中使用上下文和选项参数,我应该怎么做来填充startActivity()函数中的参数?

我不能运行一个基于XML/视图的项目atm,但你正在调用的startActivity可能是ContextCompat或其他。

因为你的参数名是

var ctx: Context

传递活动实例的位置

this@MainActivity

您可以尝试使用ctx参数调用startActivity代替?

Intent(ctx, MovieDetail::class.java).also {
...
...
ctx.startActivity(it)
}

最新更新