微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 片段行为:FragmentTransaction :: replace()和反向backStack操作

我将此方法称为从AFrag转到BFrag:

showFragment()
{ 
    FragmentTransaction fragmentTransaction = mFragmentMgr.beginTransaction();

    // Add fragment to the container ContentView 
    fragmentTransaction.replace(R.id.operation_fragments_frame,mBFrag,mBFrag.getTag());

    // Add FADE effect
    fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);   

    // Keep the transaction in the back stack so it will be reversed when backbutton is pressed
    fragmentTransaction.addToBackStack(null);

    // Commit transaction
    fragmentTransaction.commit();
}

显示一个新片段(BFrag),替换前一个片段(AFrag)并保留有关事务的信息,因此可以在按下后退按钮时自动撤消/撤消.

当按下后退按钮时,一切看起来都很好,显示一个片段(AFrag).但是当我再次前进时(AFrag – > BFrag)我得到了一个“片段已添加异常”.

反向/撤消操作没有删除新片段(BFrag)吗?这是预期的行为吗?

这很奇怪,因为在此之后,我决定设置一张支票:

 if(mBFrag.isAdded()) 
 {
    fragmentTransaction.show(mBFrag);
 }
 else 
 {
   fragmentTransaction.replace(R.id.operation_fragments_frame,mBFrag.getTag());
 }

而且,它进入了else语句……我得到了异常.

我对你做错了什么了解吗?

谢谢.

最佳答案
您是否尝试使用其他方法,如remove(),然后执行add().或类似的东西?我在其他帖子上看到,replace()方法并不总是正常运行.

原文地址:https://www.jb51.cc/android/430423.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐