0

3 つのタブを持つアプリがあります。これらのタブのうち 2 つには、次のコードを使用して現在のフラグメントを新しいフラグメントに変更するボタンがあります。

MapFragment newFragment = new JourneyMapFragment(mContext, getFromDestinationCoordinate(), getToDestinationCoordinate());
                android.app.FragmentTransaction transaction = getFragmentManager().beginTransaction();
                transaction.setCustomAnimations(android.R.animator.fade_in,
                        android.R.animator.fade_out);

                // Replace whatever is in the fragment_container view with this fragment,
                // and add the transaction to the back stack
                transaction.replace(R.id.fragment_container, newFragment);
                transaction.addToBackStack(null);

                if(newFragment.isHidden()){
                    transaction.show(newFragment);
                }

                transaction.commit();

通常のフラグメントであるタブの場合、マップフラグメントに変更すると、戻るボタンを使用すると、問題なく元のフラグメントに戻ります。

ただし、マップフラグメントである別のタブを通常のフラグメントに変更すると、戻るボタンを押したときに同じアクションが得られません。押すと、ビューが白/黒のビューに変わります。

これは、戻るボタンが機能しないタブ内のトランザクション コードです。

                        Fragment newFragment = new CloseBusStopFragment(mContext, busStopList, getMyPosition());
                        android.app.FragmentTransaction transaction = getFragmentManager().beginTransaction();
                        transaction.setCustomAnimations(android.R.animator.fade_in,
                                android.R.animator.fade_out);

                        // Replace whatever is in the fragment_container view with this fragment,
                        // and add the transaction to the back stack
                        transaction.replace(R.id.fragment_container, newFragment);


transaction.addToBackStack(null);

                    if(newFragment.isHidden()){
                        transaction.show(newFragment);
                    }
                        // Commit the transaction
                        transaction.commit();

なぜこれが起こるのか知っている人はいますか?何か助けはありますか?

4

1 に答える 1

0

手動でできる場合は、 onBackPressed() をオーバーライドして、手動でやりたいことを何でもできます。

   @Override
   public void onBackPressed() {
                   // Do whatever your transaction manually
        super.onBackPressed();

    }
于 2013-04-25T13:01:50.653 に答える