Android中的AddtoBackStack

时间:2013-12-18 10:25:23

标签: android android-fragments

我将使用replace命令进入下一个片段,并且在后退按钮上我需要回到之前的片段。然而它进入主页而不是之前的片段。以下是代码:

View.OnClickListener nextBtnClick = new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            FragmentManager manager = getFragmentManager();
            FragmentTransaction ft = manager.beginTransaction();
            Fragment2 tf = new Fragment2();
            ft.replace(android.R.id.tabcontent, tf);
            ft.addToBackStack(null);
            ft.commit();
        }

    };

我尝试了很多选项,但它不会回到调用新片段的片段。请指教。感谢。

3 个答案:

答案 0 :(得分:1)

我认为在调用addToBackStack()时需要输入一个String。像这样:

ft.addToBackStack("Fragment2");

答案 1 :(得分:0)

你必须覆盖你的onBackPressed来弹出后面的片段堆栈,如下所示:

@Override
public void onBackPressed() {
    FragmentManager fm = getSupportFragmentManager();
    if (fm.getBackStackEntryCount() > 0) {
        fm.popBackStackImmediate();
    }else{
        super.onBackPressed();
    }
}

答案 2 :(得分:0)

要在backstack中添加片段:

FragmentTransaction transaction = getSupportFragmentManager()。beginTransaction();

    transaction.replace(fragmentContainerId, fragmentInstance, "TAG");
    transaction.addToBackStack("TAG");
    transaction.commit();

覆盖背压:

写入方法return boolean

{ FragmentManager fragManager = getSupportFragmentManager();         if(fragManager.getBackStackEntryCount()> 0)         {

        fragManager.popBackStack();

返回true; } 返回false; }