diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java index c5b85707a2..9127fb8a22 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java @@ -58,8 +58,8 @@ public class TaxiFragment extends BaseTaxiTabFragment grabOrderFragmentWR; + private WeakReference serverOrdersFragmentWR; private WeakReference personalDialogFragment = null; private LoginService loginService; @@ -118,32 +118,34 @@ public class TaxiFragment extends BaseTaxiTabFragment(TaxiServerOrdersFragment.newInstance()); + grabOrderFragmentWR = new WeakReference<>(TaxiGrabOrderFragment.newInstance()); FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); //默认显示OCHTaxiServerOrdersFragment - transaction.add(R.id.fragment_container, serverOrdersFragment).show(serverOrdersFragment); - transaction.add(R.id.fragment_container, grabOrderFragment).hide(grabOrderFragment); + transaction.add(R.id.fragment_container, serverOrdersFragmentWR.get()).show(serverOrdersFragmentWR.get()); + transaction.add(R.id.fragment_container, grabOrderFragmentWR.get()).hide(grabOrderFragmentWR.get()); transaction.commitAllowingStateLoss(); } private void showGrabFragmentAndUpdate() { FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); - if (grabOrderFragment == null) { - grabOrderFragment = TaxiGrabOrderFragment.newInstance(); - transaction.add(R.id.fragment_container, grabOrderFragment).show(grabOrderFragment).commitAllowingStateLoss(); + if (grabOrderFragmentWR == null || grabOrderFragmentWR.get() == null) { + grabOrderFragmentWR = new WeakReference<>(TaxiGrabOrderFragment.newInstance()); + transaction.add(R.id.fragment_container, grabOrderFragmentWR.get()) + .show(grabOrderFragmentWR.get()).commitAllowingStateLoss(); } else { - transaction.show(grabOrderFragment).hide(serverOrdersFragment).commitAllowingStateLoss(); + transaction.show(grabOrderFragmentWR.get()).hide(serverOrdersFragmentWR.get()).commitAllowingStateLoss(); } } public void showServerFragmentAndUpdate() { FragmentTransaction transaction = getChildFragmentManager().beginTransaction(); - if (serverOrdersFragment == null) { - serverOrdersFragment = TaxiServerOrdersFragment.newInstance(); - transaction.add(R.id.fragment_container, serverOrdersFragment).show(serverOrdersFragment); + if (serverOrdersFragmentWR == null || serverOrdersFragmentWR.get() == null) { + serverOrdersFragmentWR = new WeakReference<>(TaxiServerOrdersFragment.newInstance()); + transaction.add(R.id.fragment_container, serverOrdersFragmentWR.get()) + .show(serverOrdersFragmentWR.get()); } else { - transaction.show(serverOrdersFragment).hide(grabOrderFragment).commitAllowingStateLoss(); + transaction.show(serverOrdersFragmentWR.get()).hide(grabOrderFragmentWR.get()).commitAllowingStateLoss(); } } @@ -208,8 +210,8 @@ public class TaxiFragment extends BaseTaxiTabFragment waitServiceList) { if (null == waitServiceList) return; - if (null == serverOrdersFragment) return; - serverOrdersFragment.onOrdersWaitServiceChanged(waitServiceList); + if (null == serverOrdersFragmentWR || serverOrdersFragmentWR.get() == null) return; + serverOrdersFragmentWR.get().onOrdersWaitServiceChanged(waitServiceList); } public void queryCurOrderRouteInfo() { @@ -331,13 +333,13 @@ public class TaxiFragment extends BaseTaxiTabFragment