diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarListPanelProvider.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarListPanelProvider.java index 74448a1079..36402ac240 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarListPanelProvider.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/onlinecar/panel/OnlineCarListPanelProvider.java @@ -30,14 +30,11 @@ class OnlineCarListPanelProvider implements IMogoOnlineCarListPanelProvider { @Override public void showPanel() { - Fragment fragment = null; - if ( ( fragment = isFragmentAdded( ContainerHandler.sAttachContext ) ) != null ) { - if ( fragment instanceof OnlineCarPanelFragment ) { - ( ( OnlineCarPanelFragment ) fragment ).refreshPanel(); - } + if ( ContainerHandler.sAttachContext == null ) { return; } - fragment = new OnlineCarPanelFragment(); + Fragment fragment = new OnlineCarPanelFragment(); + Logger.d( TAG, "showPanel" ); ContainerHandler.sAttachContext .getSupportFragmentManager() .beginTransaction() @@ -45,20 +42,12 @@ class OnlineCarListPanelProvider implements IMogoOnlineCarListPanelProvider { .commitNowAllowingStateLoss(); } - private Fragment isFragmentAdded( Context context ) { - if ( !( context instanceof FragmentActivity ) ) { - Logger.w( TAG, "context is not a instance of FragmentActivity" ); - return null; - } - Fragment fragment = null; - return ( fragment = ( ( FragmentActivity ) context ) - .getSupportFragmentManager() - .findFragmentByTag( TAG ) ) != null && fragment.isAdded() - ? fragment : null; - } - @Override public void hidePanel() { + if ( ContainerHandler.sAttachContext == null ) { + return; + } + Logger.d( TAG, "hidePanel" ); Fragment fragment = ContainerHandler.sAttachContext.getSupportFragmentManager().findFragmentByTag( TAG ); if ( fragment != null ) { ContainerHandler.sAttachContext diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java index ff3371997a..b55f61e4f1 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/scenario/impl/V2XScenarioManager.java @@ -60,12 +60,7 @@ public class V2XScenarioManager implements IV2XScenarioManager { V2XUtils.runOnUiThread(() -> { // 提取之前存储的场景 if (v2XMessageEntity != null) { - try { - // 与其它面板互斥 - V2XServiceManager.getMogoOnlineCarListPanelProvider().hidePanel(); - } catch (Exception e) { - e.printStackTrace(); - } + // 广播给应用内部其它模块 Intent intent = new Intent(V2XConst.BROADCAST_SCENE_ACTION); @@ -77,27 +72,34 @@ public class V2XScenarioManager implements IV2XScenarioManager { if (mV2XScenario == null) { switch (v2XMessageEntity.getType()) { case V2XMessageEntity.V2XTypeEnum.ALERT_ROAD_WARNING: + hidOtherPanel(); mV2XScenario = V2XRoadEventScenario.getInstance(); break; case V2XMessageEntity.V2XTypeEnum.ALERT_SEEK_WARNING: + hidOtherPanel(); mV2XScenario = V2XSeekHelpScenario.getInstance(); break; case V2XMessageEntity.V2XTypeEnum.ALERT_FATIGUE_DRIVING: + hidOtherPanel(); mV2XScenario = V2XFatigueDrivingScenario.getInstance(); break; case V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_WINDOW_WARNING: + hidOtherPanel(); mV2XScenario = V2XPushEventScenario.getInstance(); break; case V2XMessageEntity.V2XTypeEnum.ALERT_PUSH_LIVE_CAR_WARNING: + hidOtherPanel(); mV2XScenario = V2XPushLiveCarScenario.getInstance(); break; case V2XMessageEntity.V2XTypeEnum.ALERT_ANIMATION_WARNING: + hidOtherPanel(); mV2XScenario = V2XAnimationScenario.getInstance(); break; case V2XMessageEntity.V2XTypeEnum.ALERT_CAR_FOR_HELP: mV2XScenario = V2XCarForHelpScenario.getInstance(); break; case V2XMessageEntity.V2XTypeEnum.ALERT_ILLEGAL_PARK_WARNING: + hidOtherPanel(); mV2XScenario = V2XIllegalParkScenario.getInstance(); break; default: @@ -116,4 +118,13 @@ public class V2XScenarioManager implements IV2XScenarioManager { }); } } + + private void hidOtherPanel() { + try { + // 与其它面板互斥 + V2XServiceManager.getMogoOnlineCarListPanelProvider().hidePanel(); + } catch (Exception e) { + e.printStackTrace(); + } + } }