首页 > 解决方案 > 如何在将用户带到下一个选项卡之前处理 TabLayout 单击?

问题描述

我有四个ViewPager附在OnTabSelected. 其中一个选项卡包含表单字段,一旦用户进行任何更改,我不应该让用户移动到下一个选项卡,除非他保存更改。

(换句话说,应该alert继续OnTabSelected而不是将用户带到下一个选项卡)

但我无法控制TabLayout -> "addOnTabSelectedListener"

任何帮助都会很棒

binding.tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
    override fun onTabSelected(tab: TabLayout.Tab) {
        if (State.isClear()) {
            showNextTab()
        } else {
            showSaveSelectionAlert()
        }
    }

    override fun onTabUnselected(tab: TabLayout.Tab) {
    }

    override fun onTabReselected(tab: TabLayout.Tab) {
    }
})

标签: androidkotlinandroid-tablayout

解决方案


参考这个答案。除非您通过设置为 true 来特别允许它,否则显示的CustomViewPager内容不允许任何滚动。setPagingEnabled我的想法是setPagingEnabled在用户填写所有字段之前必须为假。如果是这种情况,分页将再次启用,因此用户可以滑动到下一个选项卡。否则会出现错误信息。

我们可以进一步扩展它并使其也适用于TabLayout此答案向您展示了如何禁用单击选项卡。不过,onTouch必须以不同的方式覆盖。如果满足所有条件,则应返回 false - 表示用户可以切换选项卡。否则显示错误消息。

简而言之:借助我为您提供的链接,禁用 ViewPager 的分页和 TabLayout 的选项卡切换。满足您的条件后启用它,否则显示错误。


推荐阅读