标签和后退按钮。如何防止用户退出应用程序

时间:2013-07-06 16:50:19

标签: android

我正在使用标签主机和片段来显示多个页面。现在,当我按下一个标签然后按一个后退按钮时,用户就会离开我的应用程序。我想要防止这种情况,所以当片段堆栈中没有任何内容时,会出现一个对话框,询问用户是否要离开应用程序。我给出的解决方案是当按下后退按钮时,我看到现在显示的是什么片段,是否是我显示对话框的任何主要选项卡。这工作正常,但我只想在按下后退按钮时没有其他任何内容显示对话框。我将尝试用一个例子来解释我的自我:

假设我有标签A,B,C,D。

对于每个标签,我都有一个显示其内容的片段:Fragment_A,Fragment_B,Fragment_C,Fragment_D。

从Fragment_A,我可以去Fragment_C,Fragment_W,Fragment_Z。

现在假设我在fragment_A中,然后按下一个按钮将我带到Fragment_C。在我的堆栈中,我有:fragment_A,fragment_C。由于fragment_C是主要选项卡,当我按下后退按钮时,我的解决方案将显示对话框。但我不想要这种行为,我想回到fragment_A。然后,如果用户再次按下后退按钮,我想显示对话框,因为我的堆栈中没有其他内容。

这就是我所拥有的:

@Override
public void onBackPressed() { 

    Fragment currentFragment = this.getSupportFragmentManager().findFragmentById(android.R.id.tabcontent);

    String fragmentTag = currentFragment.getTag().toString();


    if (fragmentTag.equals(tagFragmentClients) || fragmentTag.equals(tagFragmentTasks) || fragmentTag.equals(tagFragmentSettings) || fragmentTag.equals(tagFragmentLogout)){

        showDialog();

    }
}

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

这不是正常的Android行为,但我想您可以使用FragmentManager getBackStackEntryCount()方法来确定背斜堆的大小,如果等于0,则可以显示警报对话框。