【发布时间】:2021-01-27 18:38:05
【问题描述】:
我有一个 viewpager2 绑定到一个包含许多不同片段的 tablayout,如果他没有完成每个片段上的一些 textview,我不希望用户选择另一个选项卡。因此,当用户选择另一个选项卡时,我会显示一条消息,要求完成当前的片段数据。当用户在 TabSelectedListener 的“onTabUnselected”方法中选择另一个选项卡但没有成功时,我尝试选择旧选项卡。这是代码,请查看我想防止片段更改的TODO注释。
viewPager = view.findViewById(R.id.mypager)
TabLayoutMediator(tabLayout, viewPager, true, false,
TabLayoutMediator.TabConfigurationStrategy { tab: TabLayout.Tab, position: Int ->
tab.text = titles[position]
}).attach()
tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab?) {
}
override fun onTabUnselected(tab: TabLayout.Tab?) {
val currFragment= fragmentSet[tab!!.position]
if (!currFragment.validateFields()) {
//TODO: don't change tab, remain in this tab something like tab.aborselectedtTransition
}
}
override fun onTabReselected(tab: TabLayout.Tab?) {
}
})
有人可以帮帮我吗?
【问题讨论】:
-
也许像
tab.view.clickable = false之类的显而易见的东西在右侧选项卡的内部策略 + 在需要时创建新的 /reattach TabLayoutMediator? -
试图分离 TabLayoutMediator,但我不知道该怎么做
-
根据当前选项卡和验证结果将我的代码添加到
tab.text = titles[position]的位置...并重新附加 -
不幸的是不起作用,它失去了选项卡选择,您无法再更改选项卡,因此您可以重新提交您的片段数据,,,
标签: android android-tablayout android-viewpager2