getActivty()来自非活动类Kotlin

我想通过点击一个FragmentRecyclerView项目从Fragment到一个ActivityRecyclerView适配器是在单独的类中创建的,所以在setOnClickListener{}的部分中我必须编写Intent部分。

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

您可能已经猜到的问题是MainActivty.getActivity() 。 我试图从Fragment通过onButtonClick而不是MainActivty.getActivity()我只写了activity ,它完美的工作,但它不适用于RecyclerView适配器,因为它是非活动类。 如何解决我的问题? 最好的,阿门。

你实际上并不需要一个Activity来启动一个Intent ,你需要一个Context 。 例如,你可以得到viewholder的itemView的Context ,如下所示:

 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