【问题标题】:getActivity() from non activity class Kotlin来自非活动类 Kotlin 的 getActivity()
【发布时间】:2018-07-08 12:04:45
【问题描述】:

我想通过单击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 适配器中不起作用,因为它是非活动类。如何解决我的问题? 最好的,阿门。

【问题讨论】:

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


    【解决方案1】:

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

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-15
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 2019-08-28
      • 2020-04-06
      相关资源
      最近更新 更多