片段 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)
}
}
}
}
我在我的项目中使用底部导航 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)
}
}
}
}