1

フラグメントに 4 つのボタンがあります。ボタン「A」をクリックすると、フラグメントがロードされます。ボタン「B」をクリックすると、別のフラグメントがロードされます。私の問題は、もう一度ボタンをクリックしたときです。新しいフラグメントがロードされています。backStack から前のフラグメントをロードしたい。

    if(rootView.findViewById(R.id.talk_main_container)!=null){
            FragmentTransaction transaction = getFragmentManager().beginTransaction();
            Bundle bundle=new Bundle();
            bundle.putString("cityid", cityId);
            if(position == 1){
                MainForumsFragment mTalkNewFragment = new MainForumsFragment(); 
                mTalkNewFragment.setArguments(bundle);
                transaction.replace(R.id.talk_main_container, mTalkNewFragment);  
            }
            if(position == 2){
                TalkNewFragment mTalkNewFragment = new TalkNewFragment();  
                mTalkNewFragment.setArguments(bundle);
                transaction.replace(R.id.talk_main_container, mTalkNewFragment);  
            }
            if(position == 3){
                TalkNewFragment mTalkNewFragment = new TalkNewFragment();  
                mTalkNewFragment.setArguments(bundle);
                transaction.replace(R.id.talk_main_container, mTalkNewFragment);  
            }
            transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
            transaction.addToBackStack(null);
            transaction.commit();  
        }

では、どうすればそれを達成できますか?

4

3 に答える 3

0

使用する必要があります

FragmentTransaction.replace(int containerId, Fragment fragment, String tag)

その後、フラグメントを取り戻すことができます:

getFragmentManager.findFragmentByTag(String tag)
于 2014-12-19T04:16:58.103 に答える
0

Fragments をバックスタックに追加するときに、 の代わりに特定の文字列タグを追加しますaddBackStack(null)

popBackStack(tag, 0)またはを使用して、バックスタックからフラグメントをポップできますpopBackstackImmediate()。これにより、指定されたタグを持つフラグメントが見つかるまで、すべてのフラグメントがポップされます。

この操作を実行するときは、ライフサイクル イベントの順序に注意してください。

于 2014-12-19T04:30:05.763 に答える