来自非活动类Kotlin的getActivity()

时间:2018-01-29 17:57:19

标签: android android-intent kotlin fragment android-context

我希望点击Fragment的{​​{1}}项,从Activity转到FragmentRecyclerView适配器是在单独的类中创建的,因此在RecyclerView部分的该类中,我必须编写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适配器中不起作用,因为它是非活动课。如何解决我的问题? 最好,亚美尼亚。

1 个答案:

答案 0 :(得分:2)

您实际上不需要Activity来启动Intent,您需要Context。例如,您可以获取观看者Context的{​​{1}},如下所示:

itemView

或者,您可以引入一个侦听器机制并通知包含已单击项目的适配器的holder.itemView.setOnClickListener { val context = holder.itemView.context val intent = Intent(context,DetailsActivtiy::class.java) intent.putExtra("ImageUrl", uri) context.startActivity(intent) } ,并让Fragment启动相应的Fragment