来自非 activity class Kotlin 的 getActivity()
getActivity() from non activity class Kotlin
我想通过单击 Fragment
的 RecyclerView
中的一项从 Fragment
转到 Activity
。 RecyclerView
适配器是在单独的 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 的 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
。
我想通过单击 Fragment
的 RecyclerView
中的一项从 Fragment
转到 Activity
。 RecyclerView
适配器是在单独的 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 的 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
。