来自非 activity class Kotlin 的 getActivity()

getActivity() from non activity class Kotlin

我想通过单击 FragmentRecyclerView 中的一项从 Fragment 转到 ActivityRecyclerView 适配器是在单独的 class 中制作的,因此在 setOnClickListener{} 部分的 class 我必须编写 Intent 部分。

holder.itemView.setOnClickListener{

            val intent = Intent(MainActivity.getActivity(),DetailsActivtiy::class.java)

            intent.putExtra("ImageUrl", uri)

            MainActivity.getActivity().startActivity(intent)
}

您可能已经猜到的问题是 MainActivty.getActivity()。 我通过 onButtonClick 而不是 MainActivty.getActivity() 尝试了 Fragment 的方法我只写了 activity 并且它工作得很好但它在 RecyclerView 适配器中不起作用,因为它是非 activity class。如何解决我的问题? 最好的,Armen。

您实际上不需要 Activity 来启动 Intent,您需要 Context。例如,您可以获取 viewholder 的 itemViewContext,如下所示:

holder.itemView.setOnClickListener {
    val context = holder.itemView.context
    val intent = Intent(context,DetailsActivtiy::class.java)
    intent.putExtra("ImageUrl", uri)
    context.startActivity(intent)
}

或者,您可以引入侦听器机制并通知包含适配器的 Fragment 某个项目已被单击,并让 Fragment 启动适当的 Intent