2012-08-06 49 views
0

我在ActionBar(Sherlock)上有两个选项卡。在某些情况下,如果她试图离开当前标签,并且如果未确认标签更改,则要求用户确认。这主要是由于用户在其他选项卡上摆弄其设置之前停止了一个进程。是否有可能拦截并取消FragmentTransaction

当我使用TabHost时,我有一个非常丑陋但可行的解决方案,在选项卡本身上有一个OnTouchListener,所以我可以在事件真正处理之前拦截事件。看起来,ActionBar标签不能有触摸监听器,所以这似乎是不可能的。

现在与ActionBar我有TabListeners处理分离和附加在FragmentTransaction。有没有简单的方法来取消交易?我想我可以对onTabUnselected和onTabSelected进行检查,只是不做相应的分离和附加操作,但感觉有点复杂。

如果停止选项卡更改听起来过于愚蠢我也打开其他建议。

回答

1

好的,这是我最终做的事情,以防止任何人在这里绊倒。我找不到任何合理的方法来阻止选项卡更改或获取选项卡视图以附加触摸监听器。至少可以说是刺激性的。

相反,当我想将用户转回到原始选项卡时,我使用TabListener附加了一个空片段。在这个片段的onResume()中,我打开了一个对话框,提供了继续到第二个选项卡或返回到第一个选项。无论哪种情况,我只需使用正确的选项卡调用操作栏的setSelectedNavigationItem(),并且TabListener将处理传输,处理我的空片段。

最后它实际上工作得很好。

相关问题