关于FragmentTransaction addToBackStack无效解决方法

如果当前创建的的Activity继承的类是ActionBarActivity,必须使用v4包的android.app.FragmentManager,否则addToBackStack (null)无效,按返回键会一次退出。

如果当前创建的的Activity继承的类是Activity,必须使用android.app.FragmentManager,这样addToBackStack (null)也是有效的,按返回键的时候会返回上一个碎片。

总结:

继承ActionBarActivity ------------------v4包的android.app.FragmentManager

继承Activity-------------------------------android.app.FragmentManager


addToBackStack() 方法是用来将当前的 Fragment 添加到返回栈中,以便在用户按下返回键时可以回到前一个 Fragment。如果你在跳转到另一个 Fragment 时使用了 addToBackStack() 方法,那么当用户按下返回键时,会返回到之前的 Fragment。这个方法的使用场景通常是在用户跳转到下一个 Fragment 时,需要保留上一个 Fragment 的状态,因此需要将其添加到返回栈中。 具体来说,使用 addToBackStack() 方法的步骤如下: 1. 在事务中使用 addToBackStack() 方法添加 Fragment 到返回栈中: ``` FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.replace(R.id.fragment_container, new MyFragment()); transaction.addToBackStack(null); transaction.commit(); ``` 2. 当用户按下返回键时,系统会从返回栈中取出上一个 Fragment 并显示: ``` @Override public void onBackPressed() { if (getSupportFragmentManager().getBackStackEntryCount() > 0) { getSupportFragmentManager().popBackStack(); } else { super.onBackPressed(); } } ``` 注意,在使用 addToBackStack() 方法时,需要注意以下几点: - addToBackStack() 方法的参数可以传入一个字符串,用来标识当前 Fragment 的状态,以便在需要时可以根据这个标识恢复状态。 - 当用户按下返回键时,系统会按照添加到返回栈中的顺序依次弹出 Fragment。因此,如果你在某个 Fragment 中又添加了多个 Fragment,并且都使用了 addToBackStack() 方法,那么用户按下返回键时,会依次返回到这些 Fragment。你需要确保返回栈中的顺序符合你的预期。 - 如果你不想将 Fragment 添加到返回栈中,可以不使用 addToBackStack() 方法,这样用户按下返回键时会直接退出 Activity。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值