如何处理导航抽屉中的后退按钮动作?

时间:2015-09-08 08:44:04

标签: android android-fragments

我使用导航抽屉,当我选择一个特定的片段时我会替换当前片段,当我按下后退按钮时,应用程序将退出,有没有办法去上一个片段?

Feedback fragment = new Feedback();
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.fragment_home, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

2 个答案:

答案 0 :(得分:0)

getSupportFragmentManager().addOnBackStackChangedListener(
    new FragmentManager.OnBackStackChangedListener() {
        public void onBackStackChanged() {
            // Update your UI here.
        }
    });

也许这会有帮助吗?资料来源:http://developer.android.com/training/implementing-navigation/temporal.html#back-fragments

答案 1 :(得分:0)

是的,您已经将片段事务添加到后台堆栈,但默认情况下,后退按钮只是前一个Activity而不是片段。

您需要覆盖onBackPressed以指定要遍历片段backstack,您可以通过在活动中添加以下内容来完成此操作。你检查你的后台堆栈中是否有任何东西,如果有'弹出'后堆栈,如果后堆栈中没有任何内容,后退按钮就是这样做是正常的:

@Override
public void onBackPressed() {
if(getFragmentManager().getBackStackEntryCount() > 0) {
        getSupportManager().popBackStack();
    } else {
        super.onBackPressed();

    }
}