Android fragment 和后台堆栈

标签 android android-fragments back-stack fragment-backstack

我正在构建一个使用抽屉式导航的 Android 应用程序,它看起来和运行良好,除了我无法将当前 View ( fragment )添加到后台堆栈以允许用户更轻松地导航应用程序。目前,后退按钮仅在按下时退出应用程序。我在这里查看了各种问题,但没有一个有效。

这是我目前的尝试,不明白为什么它不起作用。

    if (id == R.id.nav_gallery) {
//            fragmentManager.beginTransaction().replace(R.id.content_frame, new  GalleryFragment()).commit();
//            fragmentManager.beginTransaction().addToBackStack(null);

        FragmentTransaction ft = fragmentManager.beginTransaction();
        ft.replace(R.id.content_frame, new GalleryFragment());
        ft.addToBackStack(null);
        ft.commit();
    }

编辑

onbackPressed

@Override
public void onBackPressed() {
    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    FragmentManager fragmentManager = getFragmentManager();
    int backCount = fragmentManager.getBackStackEntryCount();

    if (drawer.isDrawerOpen(GravityCompat.START)) {
        drawer.closeDrawer(GravityCompat.START);
    } else {
        super.onBackPressed();
    }
}

最佳答案

如果你想在按下android的后退按钮时控制你的交易,那么使用下面的代码

@Override
public void onBackPressed() {

// initialize variables
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();

// check to see if stack is empty
if (fm.getBackStackEntryCount() > 0) {          
    fm.popBackStack();
    ft.commit();    
}
else {
    if (this.lastBackPressTime < System.currentTimeMillis() - 4000) {
Toast.makeText(this, "Nochmal drücken zum Beenden!", 4000).show();
this.lastBackPressTime = System.currentTimeMillis();
} else{
        super.onBackPressed();
    }        
}
}

关于Android fragment 和后台堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34085814/

相关文章:

java - 在 Android 中从 OpenCV Mat 获取圆 vector ?

Android: ViewGroup,如何拦截MotionEvent然后派发到target或者按需吃?

android - 根据 fragment 中的流程关闭 Activity 中的抽屉导航?

java - 抽屉导航后退按钮到主要 fragment

Android 如何在 Activity 返回堆栈 "jump to another branch"中返回 "tree"?

android - 使用 actionLayout (SherlockActionBar) 时未调用 onOptionsItemSelected

java - Android 测试存储空间不足

android - 是否可以在将 fragment 添加到 Activity 后将参数传递给 fragment ?

android - 通过 Fragments 返回后出现白屏

android - 弹出堆栈抛出 "Fragment Already Added"异常