Fragment commit already called的错误

来源:互联网 发布:小型公司网络方案 编辑:程序博客网 时间:2024/06/05 15:21

在使用fragment时,当需要使用事务transaction来动态切换时,每一个commit都需要使用局部临时变量,不能使用全局变量,否则会报告commit already called的错误。例如:

 if (fragment.getTag().equals(TAG_FRAGMENT_ONE)) { //每次使用时都使用局部变量FragmentManager 和FragmentTransaction 来commit        FragmentManager fm = getSupportFragmentManager();        FragmentTransaction ft = fm.beginTransaction();        ft.replace(R.id.activity_fragment_demo, new FragmentTwo(), TAG_FRAGMENT_TWO);        ft.addToBackStack(null);        ft.commit();    } else {        if (fragment.getTag().equals(TAG_FRAGMENT_TWO)) {        //每次使用时都使用局部变量FragmentManager 和FragmentTransaction 来commit            FragmentManager fm = getSupportFragmentManager();            FragmentTransaction ft = fm.beginTransaction();            ft.hide(fragment);            ft.add(R.id.activity_fragment_demo, new FragmentThree(), TAG_FRAGMENT_THREE);            ft.addToBackStack(null);            ft.commit();        } else {            if (fragment.getTag().equals(TAG_FRAGMENT_THREE)) {                LoginDialogFragment dialog = new LoginDialogFragment();                dialog.show(getSupportFragmentManager(), "login");            } else {            }        }    }
0 0
原创粉丝点击