diff --git a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java index 4ed54a01d3..8af9f5a0dd 100644 --- a/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java +++ b/modules/mogo-module-main/src/main/java/com/mogo/module/main/MainActivity.java @@ -1,6 +1,7 @@ package com.mogo.module.main; import android.os.Bundle; +import android.view.View; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -23,6 +24,7 @@ import com.mogo.module.main.cards.OnPageChangeListenerAdapter; import com.mogo.module.main.cards.OrientedViewPager; import com.mogo.module.main.cards.VerticalStackTransformer; import com.mogo.module.main.fragmentmanager.FragmentStack; +import com.mogo.module.main.fragmentmanager.FragmentStackTransactionListener; import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.ServiceConst; import com.mogo.service.MogoServicePaths; @@ -84,6 +86,16 @@ public class MainActivity extends MvpActivity< MainView, MainPresenter > impleme } ); FragmentStack.getInstance().init( this, R.id.module_main_id_search_fragment ); + FragmentStack.getInstance().setFragmentStackTransactionListener( new FragmentStackTransactionListener() { + @Override + public void onTransaction() { + if ( FragmentStack.getInstance().isEmpty() ) { + // TODO: 2020-01-08 动画 + } else if ( FragmentStack.getInstance().getStackSize() == 1 ) { + + } + } + } ); } @Override 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 42d6b9c350..a539c5beef 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 @@ -87,12 +87,17 @@ public class FragmentStack { mFragmentTransaction.commitAllowingStateLoss(); mCurrentFragment = null; } else { - Fragment fragment = mFragmentStack.pop(); - if ( fragment != null ) { - mFragmentTransaction.show( fragment ); - mFragmentTransaction.commitAllowingStateLoss(); + mFragmentStack.pop(); + if ( !mFragmentStack.isEmpty() ) { + Fragment fragment = mFragmentStack.pop(); + if ( fragment != null ) { + mFragmentTransaction.show( fragment ); + mFragmentTransaction.commitAllowingStateLoss(); + } + mCurrentFragment = fragment; + } else { + mCurrentFragment = null; } - mCurrentFragment = fragment; } if ( getFragmentStackTransactionListener() != null ) { @@ -104,6 +109,10 @@ public class FragmentStack { return mFragmentStack.isEmpty(); } + public int getStackSize() { + return mFragmentStack.size(); + } + public FragmentStackTransactionListener getFragmentStackTransactionListener() { return mFragmentStackTransactionListener; }