浏览代码

[공통][New] 사용 중 네트워크 에러는 Activity 로 전환

hyodong.min 7 年之前
父节点
当前提交
081d7bca19

+ 6 - 0
app/src/main/AndroidManifest.xml

@@ -51,6 +51,12 @@
       android:windowSoftInputMode="adjustResize">
     </activity>
 
+    <activity
+      android:name=".lifeplus.activity.NetworkErrorActivity"
+      android:screenOrientation="portrait"
+      android:windowSoftInputMode="adjustResize">
+    </activity>
+
     <activity
       android:name="com.facebook.FacebookActivity"
       android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"

+ 2 - 6
app/src/main/java/kr/co/zumo/app/lifeplus/activity/ActivityBase.java

@@ -70,14 +70,10 @@ public abstract class ActivityBase extends AppCompatActivity {
       first screen
      */
 
-    // ScreenStarter 에서 설정된 프래그먼트를 선택한다.
-    int fragmentFlag = getIntent().getIntExtra(ScreenStarter.FLAG_FRAGMENT, ScreenStarter.START_FROM_MAIN);
-    int screenId = new ScreenStarterIDMapper().getScreenId(fragmentFlag);
-
-    renderScreen(screenId);
+    renderScreen();
   }
 
-  protected abstract void renderScreen(int screenId);
+  protected abstract void renderScreen();
 
   @Override
   protected final void onNewIntent(Intent intent) {

+ 6 - 2
app/src/main/java/kr/co/zumo/app/lifeplus/activity/MainActivity.java

@@ -31,10 +31,14 @@ import kr.co.zumo.app.lifeplus.view.screen.factory.FragmentFactory;
 public class MainActivity extends ActivityBase {
 
   @Override
-  protected void renderScreen(@ScreenID.ID int screenId) {
+  protected void renderScreen() {
     ScreenChangerHelper helper = getHelper(ScreenChangerHelper.class);
 
-    // 첫 화면 전환
+    // ScreenStarter 에서 설정된 프래그먼트를 선택한다.
+    int fragmentFlag = getIntent().getIntExtra(ScreenStarter.FLAG_FRAGMENT, ScreenStarter.START_FROM_MAIN);
+    int screenId = new ScreenStarterIDMapper().getScreenId(fragmentFlag);
+
+    // 첫 화면 표시
     FragmentFactory factory = new BasicFragmentFactory();
     ScreenChanger screenChanger = new FragmentSkipBackChanger(helper.getAppCompatActivity().getSupportFragmentManager(), helper.getContainerId(), factory, helper.getSkipBackIds());
 

+ 45 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/activity/NetworkErrorActivity.java

@@ -0,0 +1,45 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.activity;
+
+import kr.co.zumo.app.lifeplus.helper.ScreenChangerHelper;
+import kr.co.zumo.app.lifeplus.supervisor.FragmentSkipBackChanger;
+import kr.co.zumo.app.lifeplus.supervisor.ScreenChanger;
+import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
+import kr.co.zumo.app.lifeplus.view.screen.factory.BasicFragmentFactory;
+import kr.co.zumo.app.lifeplus.view.screen.factory.FragmentFactory;
+
+/**
+ * NetworkErrorActivity
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2018. 9. 5.]   [최초 작성]
+ * @since 2018. 9. 5.
+ */
+public class NetworkErrorActivity extends ActivityBase {
+
+  @Override
+  protected void renderScreen() {
+    ScreenChangerHelper helper = getHelper(ScreenChangerHelper.class);
+
+    int screenId = ScreenID.NETWORK_ERROR;
+
+    // 첫 화면 표시
+    FragmentFactory factory = new BasicFragmentFactory();
+    ScreenChanger screenChanger = new FragmentSkipBackChanger(helper.getAppCompatActivity().getSupportFragmentManager(), helper.getContainerId(), factory, helper.getSkipBackIds());
+
+    screenChanger.changeTo(screenId);
+  }
+
+  @Override
+  protected void onAfterDestroy() {
+
+  }
+
+}
+
+

+ 42 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/supervisor/screen/ActivityScreen.java

@@ -0,0 +1,42 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.supervisor.screen;
+
+import android.content.Intent;
+
+import kr.co.zumo.app.lifeplus.activity.NetworkErrorActivity;
+import kr.co.zumo.app.lifeplus.helper.ScreenManagerHelper;
+import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
+
+/**
+ * ActivityScreen
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2018-11-18]   [최초 작성]
+ * @since 2018-11-18
+ */
+public class ActivityScreen extends Screen {
+
+  public ActivityScreen(ScreenManagerHelper helper, int id, int direction, int method) {
+    super(helper, method, id, direction);
+  }
+
+  @Override
+  public void change() {
+    Class<?> activityClass = null;
+    switch (id) {
+      case ScreenID.NETWORK_ERROR:
+        activityClass = NetworkErrorActivity.class;
+        break;
+      default:
+        break;
+    }
+
+    Intent intent = new Intent(helper.getView().getActivity(), activityClass);
+    helper.getView().getActivity().startActivity(intent);
+  }
+}

+ 3 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/supervisor/screen/ScreenManager.java

@@ -39,7 +39,9 @@ public class ScreenManager implements IScreen {
     // todo factory 로 분리할 부분
     IScreen screen;
     switch (id) {
-
+      case ScreenID.NETWORK_ERROR:
+        screen = new ActivityScreen(helper, id, direction, method);
+        break;
       case ScreenID.SIGN_UP_START:
         screen = new SignUpStartScreen(helper, id, direction, method);
         break;

+ 34 - 0
app/src/main/java/kr/co/zumo/app/lifeplus/view/command/FinishActivityCommand.java

@@ -0,0 +1,34 @@
+/*
+ * COPYRIGHT (c) 2018 All rights reserved by HANWHA LIFE.
+ */
+package kr.co.zumo.app.lifeplus.view.command;
+
+import android.app.Activity;
+
+import kr.co.zumo.app.lifeplus.model.Model;
+import kr.co.zumo.app.lifeplus.view.IView;
+import kr.co.zumo.app.lifeplus.view.presenter.Presenter;
+
+/**
+ * FinishActivityCommand
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2018-09-22]   [최초 작성]
+ * @since 2018-09-22
+ */
+public class FinishActivityCommand extends Command<Model, IView, Presenter> {
+
+  @Override
+  public void execute(Model model, IView view, Presenter presenter) {
+    Activity activity = view.getActivity();
+    activity.finish();
+  }
+
+  @Override
+  public void dispose() {
+
+  }
+}

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

@@ -12,9 +12,9 @@ import kr.co.zumo.app.lifeplus.activity.ScreenStarter;
 import kr.co.zumo.app.lifeplus.application.App;
 import kr.co.zumo.app.lifeplus.model.BlankModel;
 import kr.co.zumo.app.lifeplus.network.NetworkWatcher;
-import kr.co.zumo.app.lifeplus.supervisor.ScreenID;
 import kr.co.zumo.app.lifeplus.view.Event;
 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.presenter.Presenter;
 
 /**
@@ -109,7 +109,7 @@ public class NetworkErrorPresenter extends Presenter<BlankModel, INetworkErrorVi
      */
 
     // 사용 중 에러로 진입 할 경우
-    back(ScreenID.MAIN);
+    onCommand(new FinishActivityCommand());
   }
 
   /***********************************