Android片段和后台堆栈

时间:2015-12-04 10:10:19

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

我正在构建一个使用抽屉导航的Android应用程序,它外观和效果很好,除了我无法将当前视图(片段)添加到后台堆栈以允许用户更轻松地导航应用程序。此时后退按钮在按下时退出应用程序。我在这里查看了各种问题,没有一个有效。

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

    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();
    }
}

3 个答案:

答案 0 :(得分:1)

如果你想在按下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();
    }        
}
}

答案 1 :(得分:1)

instead of doing
super.onBackPressed();

使用以下条件将后顶部状态从顶部状态弹出

    if(backCount >0){
        fragmentManager.popBackStack();
    }else{
        super.onBackPressed();
    }

答案 2 :(得分:0)

你能试试这个吗?

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

希望这会对你有所帮助。

相关问题