2

我正在使用标签主机和片段来显示几个页面。现在,当我按下一个选项卡,然后按下一个后退按钮时,用户就会退出我的应用程序。我想防止这种情况发生,因此当片段堆栈中没有任何内容时,会出现一个对话框,询问用户是否要离开该应用程序。我给出的解决方案是当按下后退按钮时,我会看到现在显示的片段,如果是我显示对话框的任何主要选项卡。这很好用,但我只想在没有其他内容可显示的情况下显示对话框,当按下后退按钮时。我将尝试用一个例子更好地解释我自己:

假设我有标签 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();

    }
}

任何帮助将不胜感激。

4

1 回答 1

4

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

于 2013-07-06T17:14:56.583 回答