android kotlin单击侦听器无法替换片段

android kotlin单击侦听器无法替换片段,android,android-fragments,kotlin,Android,Android Fragments,Kotlin,我创建了一个简单的应用程序来学习如何在kotlin中使用fragment 和往常一样,如果我创建回收器视图,我必须创建一个新页面来显示项目的详细信息,因此在搜索广告后,通过我的适配器中的创建界面询问某个答案,包括一个有趣的内容,我在MainActivity中覆盖该片段,并在项目单击时执行它,我这样做了,但在我完成单击后,什么也不做,但没有错误 这是我的适配器 class ContentAdapter constructor(private val activity: MainActivity,

我创建了一个简单的应用程序来学习如何在kotlin中使用fragment 和往常一样,如果我创建回收器视图,我必须创建一个新页面来显示项目的详细信息,因此在搜索广告后,通过我的适配器中的创建界面询问某个答案,包括一个有趣的内容,我在MainActivity中覆盖该片段,并在项目单击时执行它,我这样做了,但在我完成单击后,什么也不做,但没有错误 这是我的适配器

class ContentAdapter constructor(private val activity: MainActivity, private var listOfData: ArrayList<MainMarketTickClass>, val listener: ContentListener) : RecyclerView.Adapter<ContentAdapter.ViewHolder>() {

override fun getItemCount(): Int = listOfData.size
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
    var inf = ViewHolder(LayoutInflater.from(parent!!.context).inflate(R.layout.maintick, parent, false))
    return inf

}

override fun onBindViewHolder(holder: ViewHolder, position: Int) {
    holder.bind(listOfData, listener)

}    
inner class ViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView) {

    fun bind(listOfData: ArrayList<MainMarketTickClass>, listener: ContentListener) {
        val dataListin2 = listOfData[adapterPosition]

        itemView.textView.text = dataListin2.title


        itemView.MainImage.setOnClickListener {
            listener.onItemClicked(listOfData.get(adapterPosition))
        }
    }
}

 interface ContentListener {
       fun onItemClicked(item: MainMarketTickClass){


      }


}
在适配器类中

itemView.MainImage.setOnClickListener {
            listener.onItemClicked(listOfData.get(adapterPosition))
            acitivity.onItemClicked(listOfData.get(adapterPosition))
        }
或 在片段中

 var adapter = ContentAdapter (MainActivity(),ITEMSList, <Pass the context of main activity here>)
/************/

在片段中传递数据 主要活动

override fun onItemClicked(item: MainMarketTickClass) {
        var ft1 : FragmentTransaction = supportFragmentManager.beginTransaction()
        ft1.replace(R.id.MainFrame,AddCar.newInstanceaddcar(item.someValue))
        ft1.commit()
}
在你的片段中

 companion object{
   fun newInstanceaddcar(someValue : String) : AddCar{
         val frag = AddCar()
         val args = Bundle()
         args.putString("key_some_value", someValue);
         frag.arguments = args
         return frag
        }
     }
然后在片段的onCreate方法中,从参数中获取值并将其放入某个变量中

    arguments?.let{
    someVariableDeclaredInAddCarFrag = it.getString("key_some_value")

}

谢谢你们,它和片段中的最后一个一起工作,但另一个问题是如何使用同样的乐趣来传递数据哪一个数据???您已经在侦听器中传递main类类型数据。在主活动中,您将获得MainMarketTickClass类型。您想在AddCar fragement中传递数据吗?是的,我想尝试发送字符串,比如'anything'和git null
override fun onItemClicked(item: MainMarketTickClass) {
        var ft1 : FragmentTransaction = supportFragmentManager.beginTransaction()
        ft1.replace(R.id.MainFrame,AddCar.newInstanceaddcar(item.someValue))
        ft1.commit()
}
 companion object{
   fun newInstanceaddcar(someValue : String) : AddCar{
         val frag = AddCar()
         val args = Bundle()
         args.putString("key_some_value", someValue);
         frag.arguments = args
         return frag
        }
     }
    arguments?.let{
    someVariableDeclaredInAddCarFrag = it.getString("key_some_value")

}