【发布时间】:2016-09-05 02:40:43
【问题描述】:
我正在使用导航抽屉和片段来膨胀主要活动。 但是,当我按下后退按钮时,它会关闭应用程序,这在片段设置中很明显。
我想要的是,当用户单击后退按钮时,如果当前不是视图,他们会转到主页片段,但如果他们在主页上,我希望应用程序关闭。
如何解决这个问题?
【问题讨论】:
我正在使用导航抽屉和片段来膨胀主要活动。 但是,当我按下后退按钮时,它会关闭应用程序,这在片段设置中很明显。
我想要的是,当用户单击后退按钮时,如果当前不是视图,他们会转到主页片段,但如果他们在主页上,我希望应用程序关闭。
如何解决这个问题?
【问题讨论】:
覆盖后退按钮将是一个非常糟糕的主意,因为它的弊大于利。
如果你想添加一个不会被替换的Fragment(你最初的“HomePageFragment”),只需添加这一行:
transaction.addToBackStack(null);
这会给你类似的东西:
final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.fragment, fragment, TAG_FRAGMENT);
transaction.addToBackStack(null);
transaction.commit();
如果你添加了一些其他的 Fragment,请不要将它们添加到后台堆栈中。
【讨论】:
transaction.addToBackStack("yourTag" or null); 标签用于稍后快速找到您的帧。 PopBackStackImmediate fragmentManager.popBackStackImmediate("yourTag", 0); 更多详情here
您应该重写活动类中的onBackPressed 方法,并使用它来确定是否需要切换回您的主片段或调用super.onBackPressed()。
【讨论】: