From 1fcfe2af60891386285384e6ffe378f4c0c89075 Mon Sep 17 00:00:00 2001 From: wangmingjun Date: Thu, 13 Apr 2023 17:10:38 +0800 Subject: [PATCH] =?UTF-8?q?[bus/shuttle/charter/taxi]=20=E5=90=84=E7=AB=AF?= =?UTF-8?q?fragment=E5=88=9D=E5=A7=8B=E5=8C=96bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bus/passenger/MogoOCHBusPassenger.java | 18 +++++++++++---- .../ui/BusPassengerRouteFragment.java | 2 +- .../och/bus/passenger/MogoOCHBusPassenger.kt | 21 +++++++++++++----- .../mogo/och/bus/passenger/ui/MainFragment.kt | 2 +- .../magic/mogo/och/charter/CharterProvider.kt | 3 ++- .../bus/passenger/MogoOCHBusPassenger.java | 19 ++++++++++++---- .../ui/BusPassengerRouteFragment.java | 2 +- .../mogo/och/bus/passenger/BusPassengerM2.kt | 22 +++++++++++++++---- .../och/bus/passenger/ui/PM2BaseFragment.kt | 2 +- .../com/mogo/och/sweeper/SweeperProvider.java | 18 ++++++++++++--- .../och/sweeper/fragment/SweeperFragment.java | 2 +- .../taxi/passenger/MogoOCHTaxiPassenger.java | 16 +++++++++++--- .../ui/TaxiPassengerBaseFragment.java | 2 +- .../java/com/mogo/och/taxi/TaxiProvider.java | 17 +++++++++++--- 14 files changed, 113 insertions(+), 33 deletions(-) diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.java b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.java index 3bf45d5f18..c931b96c5b 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.java +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.java @@ -6,6 +6,7 @@ import android.content.Context; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; +import androidx.fragment.app.FragmentManager; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.eagle.core.data.config.FunctionBuildConfig; @@ -77,14 +78,23 @@ public class MogoOCHBusPassenger implements IMogoOCH { } private void showFragment() { - if (mPassengerFragment == null) { + FragmentManager supportFragmentManager = mActivity.getSupportFragmentManager(); + if(mPassengerFragment == null){ CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "准备add fragment======"); - mPassengerFragment = new BusPassengerRouteFragment(); - mActivity.getSupportFragmentManager().beginTransaction().add(mContainerId, mPassengerFragment).commitAllowingStateLoss(); + Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(BusPassengerRouteFragment.TAG); + if (fragmentByTag instanceof BusPassengerRouteFragment){ + mPassengerFragment = (BusPassengerRouteFragment)fragmentByTag; + }else { + mPassengerFragment = new BusPassengerRouteFragment(); + } + if (!mPassengerFragment.isAdded()){ + supportFragmentManager.beginTransaction().add(mContainerId, mPassengerFragment,BusPassengerRouteFragment.TAG).commitAllowingStateLoss(); + } return; } + CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "准备show fragment"); - mActivity.getSupportFragmentManager().beginTransaction().show(mPassengerFragment).commitAllowingStateLoss(); + supportFragmentManager.beginTransaction().show(mPassengerFragment).commitAllowingStateLoss(); } private void hideFragment(){ diff --git a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java index 9d7393f968..d141f4bef7 100644 --- a/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/mogo-och-bus-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java @@ -40,7 +40,7 @@ public class BusPassengerRouteFragment extends BusPassengerBaseFragment implements IBusPassengerMapViewCallback { - private final String TAG = "BusPassengerRouteFragment"; + public static final String TAG = "BusPassengerRouteFragment"; private final List mStationsList = new ArrayList<>(); diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.kt index 8187230dbc..e7733e8b20 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.kt +++ b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.kt @@ -3,6 +3,7 @@ package com.mogo.och.bus.passenger import android.content.Context import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity +import androidx.fragment.app.FragmentManager import com.alibaba.android.arouter.facade.annotation.Route import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager.getMapUIController import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager.stepInDayMode @@ -51,16 +52,26 @@ class MogoOCHBusPassenger : IMogoOCH { } private fun showFragment() { + val supportFragmentManager: FragmentManager? = mActivity?.supportFragmentManager + if (mPassengerFragment == null) { d(SceneConstant.M_TAXI_P + TAG, "准备add fragment======") - mPassengerFragment = MainFragment() - mActivity!!.supportFragmentManager.beginTransaction() - .add(mContainerId, mPassengerFragment!!).commitAllowingStateLoss() + var fragmentByTag: Fragment? = supportFragmentManager?.findFragmentByTag(MainFragment.TAG) + mPassengerFragment = if (fragmentByTag is MainFragment){ + fragmentByTag + }else{ + MainFragment() + } + + if (!mPassengerFragment?.isAdded!!){ + supportFragmentManager?.beginTransaction() + ?.add(mContainerId, mPassengerFragment!!, MainFragment.TAG)?.commitAllowingStateLoss() + } return } d(SceneConstant.M_TAXI_P + TAG, "准备show fragment") - mActivity!!.supportFragmentManager.beginTransaction().show(mPassengerFragment!!) - .commitAllowingStateLoss() + supportFragmentManager?.beginTransaction()?.show(mPassengerFragment!!) + ?.commitAllowingStateLoss() } private fun hideFragment() { diff --git a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/MainFragment.kt b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/MainFragment.kt index 81e38f028f..2323b2e724 100644 --- a/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/MainFragment.kt +++ b/OCH/mogo-och-charter-passenger/src/m1/java/com/mogo/och/bus/passenger/ui/MainFragment.kt @@ -255,6 +255,6 @@ class MainFragment : } companion object { - private const val TAG = "BusPassengerRouteFragment" + public const val TAG = "BusPassengerRouteFragment" } } \ No newline at end of file diff --git a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/CharterProvider.kt b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/CharterProvider.kt index b711a4f238..10dea5a459 100644 --- a/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/CharterProvider.kt +++ b/OCH/mogo-och-charter/src/driverm1/java/com/magic/mogo/och/charter/CharterProvider.kt @@ -41,12 +41,13 @@ class CharterProvider: ICharterOCH{ } else { DriverM1Fragment() } - if (!driverM1Fragment!!.isAdded) { + if (!driverM1Fragment?.isAdded!!) { mContainerId?.let { supportFragmentManager?.beginTransaction() ?.add(it, driverM1Fragment!!, DriverM1Fragment.TAG)?.commitAllowingStateLoss() } } + return } d(TAG, "准备show fragment") supportFragmentManager?.beginTransaction()?.show(driverM1Fragment!!)?.commitAllowingStateLoss() diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.java b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.java index 3bf45d5f18..e846a8cc76 100644 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.java +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/MogoOCHBusPassenger.java @@ -6,6 +6,7 @@ import android.content.Context; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; +import androidx.fragment.app.FragmentManager; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.eagle.core.data.config.FunctionBuildConfig; @@ -77,14 +78,24 @@ public class MogoOCHBusPassenger implements IMogoOCH { } private void showFragment() { - if (mPassengerFragment == null) { + FragmentManager supportFragmentManager = mActivity.getSupportFragmentManager(); + if(mPassengerFragment == null){ CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "准备add fragment======"); - mPassengerFragment = new BusPassengerRouteFragment(); - mActivity.getSupportFragmentManager().beginTransaction().add(mContainerId, mPassengerFragment).commitAllowingStateLoss(); + Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(BusPassengerRouteFragment.TAG); + if (fragmentByTag instanceof BusPassengerRouteFragment){ + mPassengerFragment = (BusPassengerRouteFragment)fragmentByTag; + }else { + mPassengerFragment = new BusPassengerRouteFragment(); + } + if (!mPassengerFragment.isAdded()){ + supportFragmentManager.beginTransaction().add(mContainerId, mPassengerFragment + ,BusPassengerRouteFragment.TAG).commitAllowingStateLoss(); + } return; } + CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "准备show fragment"); - mActivity.getSupportFragmentManager().beginTransaction().show(mPassengerFragment).commitAllowingStateLoss(); + supportFragmentManager.beginTransaction().show(mPassengerFragment).commitAllowingStateLoss(); } private void hideFragment(){ diff --git a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java index 2a7875dc40..df4fe18d6c 100644 --- a/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/mogo-och-shuttle-passenger/src/jinlvvan/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java @@ -41,7 +41,7 @@ public class BusPassengerRouteFragment extends BusPassengerBaseFragment implements IBusPassengerMapViewCallback { - private final String TAG = "BusPassengerRouteFragment"; + public static final String TAG = "BusPassengerRouteFragment"; private final List mStationsList = new ArrayList<>(); diff --git a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/BusPassengerM2.kt b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/BusPassengerM2.kt index de9937f0c7..1a73f958ab 100644 --- a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/BusPassengerM2.kt +++ b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/BusPassengerM2.kt @@ -3,6 +3,7 @@ package com.mogo.och.bus.passenger import android.content.Context import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentActivity +import androidx.fragment.app.FragmentManager import com.alibaba.android.arouter.facade.annotation.Route import com.mogo.commons.module.status.IMogoStatusChangedListener import com.mogo.commons.module.status.MogoStatusManager @@ -58,14 +59,27 @@ class MogoOCHBusPassenger : IMogoOCH, IMogoStatusChangedListener { } private fun showFragment() { + val supportFragmentManager: FragmentManager? = mActivity?.supportFragmentManager if (mPM2Fragment == null) { + d(SceneConstant.M_TAXI_P + TAG, "准备add fragment======") - mPM2Fragment = PM2BaseFragment() - mActivity?.supportFragmentManager?.beginTransaction() - ?.add(mContainerId, mPM2Fragment!!)?.commitAllowingStateLoss() + + var fragmentByTag: Fragment? = supportFragmentManager?.findFragmentByTag(PM2BaseFragment.TAG) + + mPM2Fragment = if (fragmentByTag is PM2BaseFragment){ + fragmentByTag + }else{ + PM2BaseFragment() + } + + if (!mPM2Fragment?.isAdded!!){ + supportFragmentManager?.beginTransaction() + ?.add(mContainerId, mPM2Fragment!!, PM2BaseFragment.TAG)?.commitAllowingStateLoss() + } + return } d(SceneConstant.M_TAXI_P + TAG, "准备show fragment") - mActivity?.supportFragmentManager?.beginTransaction()?.show(mPM2Fragment!!) + supportFragmentManager?.beginTransaction()?.show(mPM2Fragment!!) ?.commitAllowingStateLoss() } diff --git a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2BaseFragment.kt b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2BaseFragment.kt index a90221bd15..bb8aaf4a23 100644 --- a/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2BaseFragment.kt +++ b/OCH/mogo-och-shuttle-passenger/src/m2/java/com/mogo/och/bus/passenger/ui/PM2BaseFragment.kt @@ -67,6 +67,6 @@ class PM2BaseFragment : } companion object { - private val TAG = PM2BaseFragment::class.java.simpleName + public val TAG = PM2BaseFragment::class.java.simpleName } } \ No newline at end of file diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/SweeperProvider.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/SweeperProvider.java index a7a79ba132..7e13c95fd3 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/SweeperProvider.java +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/SweeperProvider.java @@ -5,6 +5,7 @@ import android.content.Context; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; +import androidx.fragment.app.FragmentManager; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; @@ -33,14 +34,25 @@ public class SweeperProvider implements IMogoOCH { } private void showFragment() { + FragmentManager supportFragmentManager = activity.getSupportFragmentManager(); if (sweeperFragment == null) { CallerLogger.INSTANCE.d(TAG, "准备add fragment======"); - sweeperFragment = new SweeperFragment(); - activity.getSupportFragmentManager().beginTransaction().add(containerId, sweeperFragment).commitAllowingStateLoss(); + Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(SweeperFragment.TAG); + if (fragmentByTag instanceof SweeperFragment){ + sweeperFragment = (SweeperFragment) fragmentByTag; + }else { + sweeperFragment = new SweeperFragment(); + } + + if (!sweeperFragment.isAdded()){ + supportFragmentManager.beginTransaction().add(containerId, sweeperFragment + ,SweeperFragment.TAG).commitAllowingStateLoss(); + } + return; } CallerLogger.INSTANCE.d(TAG, "准备show fragment"); - activity.getSupportFragmentManager().beginTransaction().show(sweeperFragment).commitAllowingStateLoss(); + supportFragmentManager.beginTransaction().show(sweeperFragment).commitAllowingStateLoss(); } private void hideFragment() { diff --git a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/fragment/SweeperFragment.java b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/fragment/SweeperFragment.java index 606826fdb1..ed7a9a4dd5 100644 --- a/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/fragment/SweeperFragment.java +++ b/OCH/mogo-och-sweeper/src/main/java/com/mogo/och/sweeper/fragment/SweeperFragment.java @@ -38,7 +38,7 @@ import java.util.Objects; */ public class SweeperFragment extends BaseSweeperTabFragment implements SlidePanelView.OnSlidePanelMoveToEndListener, View.OnClickListener { - private static final String TAG = "SweeperFragment"; + public static final String TAG = "SweeperFragment"; private TextView mCurrentStationName; private TextView mNextStationName; diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java index a8a7189365..c81773973b 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/MogoOCHTaxiPassenger.java @@ -6,6 +6,7 @@ import android.content.Context; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; +import androidx.fragment.app.FragmentManager; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.commons.module.status.IMogoStatusChangedListener; @@ -48,14 +49,23 @@ class MogoOCHTaxiPassenger implements IMogoOCH { } private void showFragment() { + FragmentManager supportFragmentManager = mActivity.getSupportFragmentManager(); if (ochTaxiPassengerFragment == null) { CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "准备add fragment======"); - ochTaxiPassengerFragment = new TaxiPassengerBaseFragment(); - mActivity.getSupportFragmentManager().beginTransaction().add(mContainerId, ochTaxiPassengerFragment).commitAllowingStateLoss(); + Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(TaxiPassengerBaseFragment.TAG); + if (fragmentByTag instanceof TaxiPassengerBaseFragment){ + ochTaxiPassengerFragment = (TaxiPassengerBaseFragment) fragmentByTag; + }else { + ochTaxiPassengerFragment = new TaxiPassengerBaseFragment(); + } + if (!ochTaxiPassengerFragment.isAdded()){ + supportFragmentManager.beginTransaction().add(mContainerId, ochTaxiPassengerFragment + ,TaxiPassengerBaseFragment.TAG).commitAllowingStateLoss(); + } return; } CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "准备show fragment"); - mActivity.getSupportFragmentManager().beginTransaction().show(ochTaxiPassengerFragment).commitAllowingStateLoss(); + supportFragmentManager.beginTransaction().show(ochTaxiPassengerFragment).commitAllowingStateLoss(); } private void hideFragment() { diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java index 2a95fd785d..1a15d6abc4 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.java @@ -54,7 +54,7 @@ import java.util.Objects; public class TaxiPassengerBaseFragment extends MvpFragment implements IMogoMapListener, TaxiPassengerTaxiView, ITPClickStartAutopilotCallback{ - static final String TAG = "TaxiPassengerBaseFragment"; + public static final String TAG = "TaxiPassengerBaseFragment"; private MapBizView mapBizView; private ImageView mAutopilotImage; diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/TaxiProvider.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/TaxiProvider.java index 0126b0efc6..76a54882a1 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/TaxiProvider.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/TaxiProvider.java @@ -6,6 +6,7 @@ import android.content.Context; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; +import androidx.fragment.app.FragmentManager; import com.alibaba.android.arouter.facade.annotation.Route; import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager; @@ -44,14 +45,24 @@ class TaxiProvider implements IMogoOCH { } private void showFragment() { + FragmentManager supportFragmentManager = mActivity.getSupportFragmentManager(); if (ochTaxiFragment == null) { CallerLogger.INSTANCE.d(M_TAXI + TAG, "准备add fragment======"); - ochTaxiFragment = new TaxiFragment(); - mActivity.getSupportFragmentManager().beginTransaction().add(mContainerId, ochTaxiFragment).commitAllowingStateLoss(); + Fragment fragmentByTag = supportFragmentManager.findFragmentByTag(TaxiFragment.TAG); + if (fragmentByTag instanceof TaxiFragment){ + ochTaxiFragment = (TaxiFragment) fragmentByTag; + }else { + ochTaxiFragment = new TaxiFragment(); + } + + if (!ochTaxiFragment.isAdded()){ + supportFragmentManager.beginTransaction().add(mContainerId, ochTaxiFragment + ,TaxiFragment.TAG).commitAllowingStateLoss(); + } return; } CallerLogger.INSTANCE.d(M_TAXI + TAG, "准备show fragment"); - mActivity.getSupportFragmentManager().beginTransaction().show(ochTaxiFragment).commitAllowingStateLoss(); + supportFragmentManager.beginTransaction().show(ochTaxiFragment).commitAllowingStateLoss(); } private void hideFragment(){