IllegalStateException:片段已处于活动状态

时间:2015-01-28 10:05:21

标签: android android-fragments fragment

我有一个从FragmentActivity传递到多个片段的数据

Bundle bundle = new Bundle();
bundle.putParcelableArrayList("userid", logindata);
firstfragment.setArguments(bundle);

从片段Activity到secong片段我有这样的传递数据。

secondfragment.setArguments(bundle);

当我点击第一个片段时,它下一步点击第二个片段它也工作正常但再次点击第一个片段将发生illegal state exception Fragment already active异常。如何解决这个问题请帮帮我。提前谢谢。

2 个答案:

答案 0 :(得分:2)

illegal state exception Fragment already active

setArguments仅在片段附加到其活动之前调用,否则通过Fragment已经激活Exception。所以调用setArguments应该需要删除片段已经存在并使用replace再次添加片段。

在添加新内容之前删除片段:

Fragment fragment = 
               getSupportFragmentManager().findFragmentByTag("firstfragment");
if(fragment != null)
    getSupportFragmentManager().beginTransaction()
                               .remove(fragment).commit();

现在添加新片段:

 firstfragment.setArguments(bundle); 
 transactn = mngr.beginTransaction(); 
 transactn.replace(R.id.content_frag,firstfragment).
                    addToBackStack("firstfragment").commit();

答案 1 :(得分:0)

试试这个:

    createFragment(new YourFragment());

    private void createFragment(Fragment fragment) {
    FragmentManager fragmentManager = getFragmentManager();
    fragmentManager.beginTransaction().replace(R.id.container_app, fragment).commit();
}