Android 来自非活动类Kotlin的getActivity()
我想通过单击Android 来自非活动类Kotlin的getActivity(),android,android-intent,kotlin,fragment,android-context,Android,Android Intent,Kotlin,Fragment,Android Context,我想通过单击Fragment的RecyclerView项,从Fragment转到活动RecyclerView适配器是在单独的类中创建的,因此在setOnClickListener{}部分的该类中,我必须编写Intent部分 holder.itemView.setOnClickListener{ val intent = Intent(MainActivity.getActivity(),DetailsActivtiy::class.java)
Fragment
的RecyclerView
项,从Fragment
转到活动
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
而不是maintactivty.getActivity()
尝试了这种方法,我只写了activity
,它工作得很好,但在RecyclerView
适配器中不起作用,因为它是非活动类。如何解决我的问题?
最好的,Armen。你实际上不需要
活动
来启动意图
,你需要上下文
。例如,您可以获取viewholder的项目视图的上下文
,如下所示:
holder.itemView.setOnClickListener {
val context = holder.itemView.context
val intent = Intent(context,DetailsActivtiy::class.java)
intent.putExtra("ImageUrl", uri)
context.startActivity(intent)
}
或者,您可以引入侦听器机制,通知包含适配器的片段
某个项目已被单击,并让片段
启动相应的意图启动意图实际上不需要活动
,您需要一个上下文
。例如,您可以获取viewholder的项目视图的上下文
,如下所示:
holder.itemView.setOnClickListener {
val context = holder.itemView.context
val intent = Intent(context,DetailsActivtiy::class.java)
intent.putExtra("ImageUrl", uri)
context.startActivity(intent)
}
或者,您可以引入侦听器机制,并通知包含适配器的片段
某个项目已被单击,并让片段
启动相应的意图