Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 来自非活动类Kotlin的getActivity()_Android_Android Intent_Kotlin_Fragment_Android Context - Fatal编程技术网

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)
}
或者,您可以引入侦听器机制,并通知包含适配器的
片段
某个项目已被单击,并让
片段
启动相应的
意图