片段 Onclick 侦听器

Fragment Onclick Listener

我在我的项目中使用底部导航 Activity。其中包含以下活动。我正在使用科特林语言。我不确定如何在底部导航 activity 中从一个片段路由到另一个片段。感谢任何帮助。

代码:

https://github.com/joshvapeter/KotlinBottomNavigationNew

活动

1)One Main Activity 
2)Two Fragments
3)Two Adapter Class
4)Two Layout files

预期

当我单击 Fragment One Recycler View Item 时,它需要自动将其路由到下一个底部选项卡中的 Fragment two Recycler View Item。下面是我在项目中使用的代码。

代码

片段一适配器

        itemView.setOnClickListener {

           Log.d("Fragment One Clicked","Fragment One Clicked")
            //FragmentTwo()

            }

主要Activity

fun ShowFragmentOne() {
    val transaction = manager.beginTransaction()
    val fragment = FragmentOne()
    transaction.replace(R.id.one, fragment)
    transaction.addToBackStack(null)
    transaction.commit()
    isFragmentOneLoaded = true
}

fun ShowFragmentTwo() {
    val transaction = manager.beginTransaction()
    val fragment = FragmentTwo()
    transaction.replace(R.id.two, fragment)
    transaction.addToBackStack(null)
    transaction.commit()
    isFragmentOneLoaded = false
}

我没有足够的声誉来添加评论。所以根据我的理解,我正在写这个答案。如果我的理解有误,欢迎评论。

据我了解,当您在 FragmentOne 的 RecyclerView 中单击某个项目时,您想移动到 FragmentTwo。您可以通过以下方式实现:

片段一:

fun onItemSelected(item:MyModel){
    (activity as MainActivity).showFragmentTwo(item)
}

FragmentOneAdapter:

class FragmentOneAdapter(val fragment:FragmentOne,val myList:ArrayList<MyModel>):RecyclerView.Adapter<MyViewHolder>(){
override fun onCreateViewHolder(p0: ViewGroup, p1: Int): MyViewHolder {
    //your code to create view holder
}

override fun onBindViewHolder(p0: MyViewHolder, p1: Int) {
    p0.bindItem(myList[p1], fragment)
}

override fun getItemCount(): Int {
    return myList.size
}

class MyViewHolder(view:View):RecyclerView.ViewHolder(view){
    fun bindItem(item:MyModel,frag:FragmentOne)=with(itemView){
        setOnClickListener{
            frag.onItemSelected(item)
         }
      }
   }
}