1

フラグメントと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などと呼ばれます。

アクティビティ内でフラグメントが何度も作成されないようにする方法はありますか?また、戻るボタンでフラグメントを元に戻すことはできません。

4

1 に答える 1

8

FragmentTransaction.attach()メソッドとFragmentTransaction.detach()メソッドを使用する代わりに、 FragmentTransaction.show FragmentTransaction.hide()使用できます。上記の例で示した周囲のコードの一部も変更する必要がありますが、それはあなた自身のための演習として残しておきます。

于 2012-06-16T08:27:29.103 に答える