我有一个片段;有异常:片段已激活
MyFragment myFrag = new MyFragment();
我把捆数据这个片段:
Bundle bundle = new Bundle();
bundle.putString("TEST", "test");
myFrag.setArguments(bundle);
然后,我与穿上堆栈中这一个,更换旧片段:
//replace old fragment
fragmentTransaction.replace(R.id.fragment_placeholder, myFrag, "MyTag");
//put on backstack
fragmentTransaction.addToBackStack(null);
//commit & get transaction ID
int transId = fragmentTransaction.commit();
后来,我流行backstack上述交易ID(transId
):
//pop the transaction from backstack
fragmentManager.popBackStack(transId,FragmentManager.POP_BACK_STACK_INCLUSIVE);
后来,我再次设置捆数据作为参数传递给我的片段(myFrag
):
//Got Java.lang.IllegalStateException: fragment already active
myFrag.setArguments(bundle);
正如你看到的,我上面的代码了例外Java.lang.IllegalStateException: fragment already active
。 我不明白为什么myFrag
仍然活跃,虽然我已经从后台弹出它的交易。,无论如何,因为我得到了例外,我想我没有选择,只能去积极的片段,所以我所做的:
Fragment activeFragment = fragMgr.findFragmentByTag("MyTag");
fragmentTransaction.remove(activeFragment);
我不知道如果我的上述代码确实可以非激活的片段,因为我没有找到如何去除一个片段。 :(
之后,当我尝试捆绑数据重新设置为我的片段myFrag
,我还是得到了同样的错误:我删除片段
Java.lang.IllegalStateException: fragment already active
似乎甚至,它仍然是积极的...... 为什么如何去活性片段
你的片段是单身吗?如果有,请告诉我你的newInstance()方法。 – clauziere 2012-10-12 01:56:58
我希望这可以帮助某人。 http://stackoverflow.com/a/15263921/541620 – theWook 2013-03-07 06:00:50
http://stackoverflow.com/a/15263921/541620 我希望这可能有助于某人。 – theWook 2013-03-07 06:01:53