如何保存碎片娱乐

时间:2012-06-16 01:05:51

标签: java android android-fragments

我正在尝试使用片段和RadioGroup实现标签栏

我像这样切换片段像这样更换radiogroup(在sdk示例中看到类似的东西)

公共区域

 void onCheckedChanged(RadioGroup radioGroup, int id) {
        TabInfo newTab = mContent.get(id);

        if (newTab != lastTab) {
            FragmentTransaction transaction = mActivity.getSupportFragmentManager().beginTransaction();
            if (lastTab != null && lastTab.fragment != null) {
                transaction.detach(lastTab.fragment);
            }
            if (newTab.fragment == null) {
                newTab.fragment = Fragment.instantiate(mActivity, newTab.getTag());
                transaction.add(mContainerId, newTab.fragment);
            } else {
                transaction.attach(newTab.fragment);
            }
            lastTab = newTab;
            transaction.setCustomAnimations(R.anim.tab_transaction, R.anim.tab_transaction);
            transaction.commit();
        }
    }

但每次发生这种情况时,附加片段都是从头开始创建的,即调用onCreate等等。

有没有办法保留片段在活动中反复创建? 我也不希望后退按钮可以切换回来;

1 个答案:

答案 0 :(得分:8)

您可以使用FragmentTransaction.attach()FragmentTransaction.detach(),而不是使用方法FragmentTransaction.show()FragmentTransaction.hide()。您还需要更改上面示例中提供的一些代码,但我会将其作为锻炼身体来保留自己。