首页 文章

切换标签时如何获得通知(并且能够取消)

提问于
浏览
0

背景

我有一个viewPager和一个tabHost,用于在页面之间导航 .

在某些情况下,viewPager中的片段会想要禁止导航,甚至会显示一个对话框,要求用户验证片段中所做的更改是否会被取消 .

如果用户确认,我会允许导航,如果没有,我会拒绝 .

问题

我需要在用户尝试导航到另一个选项卡时收到通知,并且(在我创建的某些条件下)禁止/允许它 .

我尝试了什么

我发现的唯一功能是如何禁用切换 .

对于viewPager,我使用:

mViewPager.setOnTouchListener(new OnTouchListener() {

    @Override
    public boolean onTouch(final View v, final MotionEvent event) {
        return !mIsTabsSwitchingEnabled;
    }
});

对于tabHost,我使用:

mTabHost.getTabWidget().setEnabled(mIsTabsSwitchingEnabled);

然而,我需要的是完全不同的 - 我需要捕获开始导航的事件,并且能够告诉它我是否允许它 .

这个问题

我该如何解决这个问题?

如何在开始导航时收到通知,并在需要时取消?

2 回答

  • 0

    你应该使用Tab TabHost.OnTabChangeListener

  • 1

    好吧,我现在通过使用下一个代码解决了它,我希望它涵盖了所有内容 .

    如果有人能想到可能更好的另一种解决方案,请写下来 .

    final OnTouchListener onTouchListener = new OnTouchListener() {
    
        @Override
        public boolean onTouch(final View v, final MotionEvent event) {
            return isCurrentFragmentNeedTabSwitchingBlocking();
        }
    };
    mViewPager.setOnTouchListener(onTouchListener);
    for (int i = 0; i < mTabHost.getTabWidget().getChildCount(); ++i) 
        mTabHost.getTabWidget().getChildAt(i).setOnTouchListener(tabOnTouchListener);
    

相关问题