我有3个片段。(父片段,A片段,B片段)。父片段有一个视图页,视图页允许在片段A和B之间切换。我想使用片段b中的按钮返回片段a。但是视图页在父片段中。我该怎么做?
这是我的父片段:
class ParentFragment : Fragment() {
private lateinit var binding: FragmentLoginRegisterBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
binding = FragmentLoginRegisterBinding.inflate(inflater, container, false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
setAdapter()
}
fun setAdapter(activity: MainActivity) {
val tabArrayList = arrayOf("Login", "Register")
val adapter = TablayoutAdapter(requireActivity(), tabArrayList.size)
binding.apply {
viewPager.adapter = adapter
TabLayoutMediator(tabLayout, viewPager) { tab, position ->
tab.text = tabArrayList[position]
}.attach()
}
}
}
这是我的视图寻呼机:
class TablayoutAdapter(fm : FragmentActivity, var totalTabs : Int) : FragmentStateAdapter(fm) {
override fun getItemCount(): Int {
return totalTabs
}
override fun createFragment(position: Int): Fragment {
return when(position){
0->{
FragmentA()
}
1->{
FragmentB()
}
else->{
FragmentA()
}
}
}
}
这是我的A片段:
class FragmentA() : Fragment(){
private lateinit var binding : FragmentABinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentA.inflate(inflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
}
}
这是我的B片段:
class FragmentB() : Fragment(){
private lateinit var binding : FragmentBBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
binding = FragmentRegisterBinding.inflate(inflater,container,false)
return binding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.btn.setOnClickListener{
//--> Goto ViewPager Item 0
}
}
}
1条答案
按热度按时间f1tvaqid1#
您需要先找出选项卡布局的参考。
将其写入onClickListener()内的片段B中