tabhost和片段组合事务抛出android中的错误

时间:2014-02-18 18:22:53

标签: android android-fragments android-tabhost fragmenttransaction

我的应用中有一个标签主机。它使用片段活动并包含5个标签(片段) 在第3个选项卡中,有一个按钮,当我点击它时,它将转到另一个片段,即替换原始片段

gridView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v,
                    int position, long id) {
                tracker.send(MapBuilder.createEvent("click_button","Gallery","Gallery_select_" + Utility.getLocale(getActivity()),null).build());
                Bundle bundle = new Bundle();
                bundle.putSerializable("imageObj", images.get(position));
                Fragment newFragment = (Fragment) new GalleryDetail();
                FragmentTransaction transaction = getFragmentManager().beginTransaction();
                newFragment.setArguments(bundle);
                transaction.replace(R.id.tabcontent, newFragment,"gallery_detail");
                transaction.addToBackStack("gallery_detail");
                transaction.commit();
            }
        });

然后问题将在这个流程中发生:

1)打开第3个标签

2)点击按钮转到下一级片段

3)点击其他标签,例如第一个标签

4)返回第3个标签(此时,它将在下一个级别片段而不是第一个级别)

5)按下后退按钮

 02-19 02:16:46.427: E/AndroidRuntime(27697): java.lang.IllegalStateException: Fragment already added: PhotoGallery{43bc3500 #1 id=0x7f04003b Gallery}

如果退出第3个标签,如何返回第一个级别?我相信这会解决问题吗?谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

您可以尝试使用一对replace()add()方法替换remove()方法。或者您可以尝试使用SupportFragmentManager