Parcourir la source

[공통][New] 시작 시 네트워크 연결 에러 화면 수정

hyodong.min il y a 7 ans
Parent
commit
e379faa638

+ 1 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/activity/ScreenStarter.java

@@ -174,6 +174,7 @@ public class ScreenStarter {
   }
 
   private void gotoScreen(int fragmentFlag) {
+    Log.i("APP# ScreenStarter | gotoScreen", "|" + "fragmentFlag: " + fragmentFlag);
     listener.onScreenSelected(context, fragmentFlag);
   }
 

+ 9 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/dialog/AlertDialog.java

@@ -8,6 +8,7 @@ import android.content.DialogInterface;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.StringRes;
+import android.view.KeyEvent;
 import android.view.View;
 import android.widget.Button;
 
@@ -95,6 +96,14 @@ public class AlertDialog extends TextDialog {
           }
         }
       });
+
+      // 백 키 컨트롤
+      d.setOnKeyListener((arg, keyCode, event) -> {
+        if (keyCode == KeyEvent.KEYCODE_BACK) {
+          getCustomListener().onDialogResult(AlertDialog.this, new Event.Builder(Event.BACK).build());
+        }
+        return true;
+      });
     }
   }
 

+ 8 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/Presenter.java

@@ -25,6 +25,7 @@ import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.IEventListener;
 import kr.co.zumo.app.lifeplus.view.IView;
 import kr.co.zumo.app.lifeplus.view.command.Command;
+import kr.co.zumo.app.lifeplus.view.command.ExitCommand;
 import kr.co.zumo.app.lifeplus.view.command.FinishActivityCommand;
 import kr.co.zumo.app.lifeplus.view.command.ScreenCommand;
 import kr.co.zumo.app.lifeplus.view.dialog.AlertDialog;
@@ -301,7 +302,13 @@ public abstract class Presenter<M extends Model, V extends IView> implements ILi
           .listener(new ICustomDialogListener<AlertDialog>() {
             @Override
             public void onDialogResult(AlertDialog dialog, Event event) {
-              model.checkNetwork();
+              if (event.getEventId() == Event.BACK) {
+                dialogNetwork.dispose();
+                onCommand(new ExitCommand());
+              }
+              else {
+                model.checkNetwork();
+              }
             }
 
             @Override

+ 41 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/error/NetworkErrorStartingFragment.java

@@ -3,7 +3,17 @@
  */
 package kr.co.zumo.app.lifeplus.view.screen.error;
 
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import kr.co.zumo.app.R;
+import kr.co.zumo.app.lifeplus.helper.ActionBarHelper;
 import kr.co.zumo.app.lifeplus.model.BlankModel;
+import kr.co.zumo.app.lifeplus.view.screen.FragmentBase;
 
 /**
  * NetworkErrorFragment
@@ -15,10 +25,39 @@ import kr.co.zumo.app.lifeplus.model.BlankModel;
  * @history 민효동   [2018. 10. 15.]   [최초 작성]
  * @since 2018. 10. 15.
  */
-public class NetworkErrorStartingFragment extends NetworkErrorFragment {
+public class NetworkErrorStartingFragment extends FragmentBase<NetworkErrorStartingPresenter> implements INetworkErrorView {
+  @Nullable
+  @Override
+  protected View onAfterCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+    return inflater.inflate(R.layout.view_container, container, false);
+  }
+
+  @Override
+  protected void onAfterActivityCreated(Bundle savedInstanceState) {
+  }
 
   @Override
-  protected NetworkErrorPresenter definePresenter() {
+  protected void defineActionBar(ActionBarHelper actionBarHelper) {
+    actionBarHelper.begin().hide();
+  }
+
+  @Override
+  protected NetworkErrorStartingPresenter definePresenter() {
     return new NetworkErrorStartingPresenter(getModel(BlankModel.class), this);
   }
+
+  @Override
+  protected void onAfterDestroyView() {
+
+  }
+
+  @Override
+  protected void onAfterDestroy() {
+
+  }
+
+  @Override
+  protected boolean isSkipScreenWhenBack() {
+    return true;
+  }
 }

+ 77 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/error/NetworkErrorStartingPresenter.java

@@ -3,9 +3,13 @@
  */
 package kr.co.zumo.app.lifeplus.view.screen.error;
 
+import io.reactivex.disposables.Disposable;
 import kr.co.zumo.app.lifeplus.activity.ScreenStarter;
 import kr.co.zumo.app.lifeplus.activity.ScreenStarterIDMapper;
 import kr.co.zumo.app.lifeplus.model.BlankModel;
+import kr.co.zumo.app.lifeplus.view.Event;
+import kr.co.zumo.app.lifeplus.view.command.ExitCommand;
+import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
 
 /**
  * NetworkErrorPresenter
@@ -17,9 +21,10 @@ import kr.co.zumo.app.lifeplus.model.BlankModel;
  * @history 민효동   [2018. 9. 21.]   [최초 작성]
  * @since 2018. 9. 21.
  */
-public class NetworkErrorStartingPresenter extends NetworkErrorPresenter {
+public class NetworkErrorStartingPresenter extends Presenter<BlankModel, INetworkErrorView> {
 
   protected ScreenStarter starter;
+  protected Disposable disposable;
 
   public NetworkErrorStartingPresenter(BlankModel model, INetworkErrorView view) {
     super(model, view);
@@ -28,16 +33,63 @@ public class NetworkErrorStartingPresenter extends NetworkErrorPresenter {
   @Override
   protected void createViewInternal() {
   }
+
   @Override
   protected void destroyInternal() {
-    super.destroyInternal();
 
+    if (null != disposable) {
+      disposable.dispose();
+      disposable = null;
+    }
     if (null != starter) {
       starter.dispose();
       starter = null;
     }
   }
 
+  @Override
+  protected void startInternal() {
+
+  }
+
+  @Override
+  protected void stopInternal() {
+
+  }
+
+  @Override
+  protected void resumeInternal() {
+
+  }
+
+  @Override
+  protected void pauseInternal() {
+
+  }
+
+  @Override
+  protected void destroyViewInternal() {
+  }
+
+
+  @Override
+  public boolean onBackPressed() {
+    onCommand(new ExitCommand());
+    return true;
+  }
+
+  @Override
+  protected void onEventInternal(Event event) {
+    switch (event.getEventId()) {
+      case Event.RETRY:
+        model.checkNetwork();
+        break;
+      default:
+        break;
+    }
+  }
+
+
   protected void next() {
     /**
      * 진입 지점이 다를 경우 화면 이동 처리
@@ -50,4 +102,27 @@ public class NetworkErrorStartingPresenter extends NetworkErrorPresenter {
       go(screenId);
     });
   }
+
+  /***********************************
+   * listener
+   ***********************************/
+
+  @Override
+  public void onResult(Event event) {
+
+  }
+
+  @Override
+  public void onScreenReady() {
+    onChangedConnection(false, 0);
+  }
+
+  @Override
+  public void onChangedConnection(boolean isConnected, int type) {
+    super.onChangedConnection(isConnected, type);
+
+    if (isConnected) {
+      next();
+    }
+  }
 }

+ 2 - 0
app/src/main/res/values/strings.xml

@@ -217,6 +217,8 @@
 
   <string name="network_disconnected_message">서버와의 통신이 \n원활하지 않습니다.</string>
   <string name="network_disconnected_message_detail">네트워크 연결이 원활하지 않습니다.\n사용중인 네트워크 상태를 확인해주세요.</string>
+  <string name="network_disconnected_message_detail_dialog">"네트워크에 접속할 수 없습니다.\n사용중인 네트워크 연결상태를 확인해주세요."</string>
+  <string name="network_error_message_detail_dialog">"요청하신 서버에 연결할 수 없습니다.\n잠시 후 다시 시도해주세요."</string>
   <string name="error_message_404type">잠시 서비스를 \n이용하실 수 없습니다.</string>
   <string name="error_detail_message_404type">서비스 이용에 불편을 드려 죄송합니다. \n잠시 후 다시 이용해 주시기 바랍니다.</string>
   <string name="error_message_500type">서비스 이용에 불편을 드려 \n죄송합니다.</string>