是否可以拦截和取消FragmentTransaction

时间:2012-08-06 17:17:28

标签: android android-fragments android-actionbar

我在ActionBar(Sherlock)上有两个标签。在某些情况下,如果用户尝试离开当前标签,我会要求用户确认,如果未确认则停止标签更改。这主要是因为在用户在其他选项卡上设置其设置之前停止进程。

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

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

如果停止标签更改听起来过于愚蠢,我也会打开其他建议。

1 个答案:

答案 0 :(得分:1)

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

相反,当我想将用户转回原始标签时,我使用TabListener附加空片段。在这个片段的onResume()上,我打开了一个对话框,可以选择继续第二个选项卡还是返回第一个选项卡。在任何一种情况下,我只需使用正确的选项卡调用操作栏的setSelectedNavigationItem(),TabListener将处理传输,处理我的空片段。

最后它实际上非常好用。