diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/FragmentStack.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/FragmentStack.java index 0e313f715b..6453d6416a 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/FragmentStack.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/FragmentStack.java @@ -127,4 +127,19 @@ public class FragmentStack { public void setFragmentStackTransactionListener( FragmentStackTransactionListener fragmentStackTransactionListener ) { this.mFragmentStackTransactionListener = fragmentStackTransactionListener; } + + public void clearAll() { + if ( mFragmentStack.isEmpty() ) { + return; + } + mFragmentTransaction = mFragmentManager.beginTransaction(); + for ( FragmentDescriptor descriptor : mFragmentStack ) { + mFragmentTransaction.remove( descriptor.getFragment() ); + } + mFragmentTransaction.commitAllowingStateLoss(); + mCurrentFragment = null; + if ( getFragmentStackTransactionListener() != null ) { + getFragmentStackTransactionListener().onTransaction(); + } + } } diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/MogoFragmentManager.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/MogoFragmentManager.java index 809c2c08ba..9f60648c32 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/MogoFragmentManager.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/fragmentmanager/MogoFragmentManager.java @@ -26,6 +26,11 @@ public class MogoFragmentManager implements IMogoFragmentManager { FragmentStack.getInstance().pop(); } + @Override + public void clearAll() { + FragmentStack.getInstance().clearAll(); + } + @Override public void init( Context context ) { diff --git a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt index 17e3d60550..4e5209e411 100644 --- a/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt +++ b/modules/mogo-module-search/src/main/java/com/mogo/module/navi/ui/search/ChoosePathFragment.kt @@ -91,6 +91,7 @@ class ChoosePathFragment : BaseFragment(), IMogoNaviListener { rv_search_result.adapter = mAdapter tv_navi_navi.setOnClickListener { + SearchServiceHolder.fragmentManager.clearAll() SearchServiceHolder.getNavi(activity!!) .startNavi(false) } diff --git a/services/mogo-service-api/src/main/java/com/mogo/service/fragmentmanager/IMogoFragmentManager.java b/services/mogo-service-api/src/main/java/com/mogo/service/fragmentmanager/IMogoFragmentManager.java index e133b3f88e..a9d62e399a 100644 --- a/services/mogo-service-api/src/main/java/com/mogo/service/fragmentmanager/IMogoFragmentManager.java +++ b/services/mogo-service-api/src/main/java/com/mogo/service/fragmentmanager/IMogoFragmentManager.java @@ -23,4 +23,9 @@ public interface IMogoFragmentManager extends IProvider { * 将当前 fragment 出栈 */ void pop(); + + /** + * 退出栈中所有fragment + */ + void clearAll(); }