碎片之间的后退按钮问题(backstack)

时间:2013-04-25 12:21:49

标签: android fragment back-button back-stack

我有一个包含3个标签的应用。对于两个theese标签,我有一些按钮,我用这个代码改变当前片段的新片段:

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();

对于正常片段的选项卡,更改为地图片段,后退按钮会将我带回原始片段而没有使用。

然而,当按下后退按钮时,另一个作为mapfragment的选项卡,在更改为普通片段时不会给我相同的操作。按下它时,会将视图更改为白/黑视图。

这是选项卡中的后退按钮不起作用的事务代码:

                        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();

任何人都知道为什么会这样吗?有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

如果您可以手动执行此操作,则可以尝试覆盖onBackPressed()并手动执行任何操作。

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

    }