Фрагмент Onclick Listener - PullRequest
       81

Фрагмент Onclick Listener

0 голосов
/ 31 декабря 2018

Я использую Bottom Navigation Activity в моем проекте.Который содержит следующие действия.Я использую Котлин Язык.Я не уверен, как маршрутизировать от одного фрагмента к другому фрагменту в нижней навигационной активности.Любая помощь приветствуется.

Код:

https://github.com/joshvapeter/KotlinBottomNavigationNew

Активация

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

Ожидание

Когда я щелкаю по элементу View Recycler Fragment One, тогда необходимо автоматически направить его к элементу View Recycler Fragment Two на следующей нижней вкладке.Ниже приведен код, который я использую в своем проекте.

Код

Фрагмент Один адаптер

        itemView.setOnClickListener {

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

            }

MainActivity

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
}

1 Ответ

0 голосов
/ 31 декабря 2018

У меня недостаточно репутации, чтобы добавить комментарий.На основании моего понимания я пишу этот ответ.Если мое понимание неверно, пожалуйста, прокомментируйте.

Из того, что я могу понять, вы хотите перейти к FragmentTwo при нажатии на элемент в RecyclerView в FragmentOne.Вы можете достичь этого следующим образом:

FragmentOne :

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)
         }
      }
   }
} 
...