Prechádzať zdrojové kódy

[공통][Bug] ActionButton 의 정의는 View에서 하고 이벤트를 Presenter로 전달

hyodong.min 7 rokov pred
rodič
commit
48cb94848c

+ 11 - 1
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/FragmentBase.java

@@ -14,6 +14,7 @@ import android.view.View;
 import android.view.ViewGroup;
 
 import io.reactivex.disposables.CompositeDisposable;
+import kr.co.zumo.app.lifeplus.manager.ActionButtonManager;
 import kr.co.zumo.app.lifeplus.model.Model;
 import kr.co.zumo.app.lifeplus.model.ModelProvider;
 import kr.co.zumo.app.lifeplus.view.IView;
@@ -45,6 +46,7 @@ public abstract class FragmentBase<P extends Presenter> extends Fragment impleme
 
     presenter = definePresenter();
     defineActionBar();
+    defineActionButton();
   }
 
   @Nullable
@@ -117,10 +119,18 @@ public abstract class FragmentBase<P extends Presenter> extends Fragment impleme
   protected abstract void onAfterActivityCreated(Bundle savedInstanceState);
 
   /**
-   * ActionBar 를 정의 해준다.
+   * ActionBar 를 정의다.
    */
   protected abstract void defineActionBar();
 
+  /**
+   * ActionButton 을 정의한다.
+   * - 대부분 hide() 시키고 필요한 곳에서 Override 한다.
+   */
+  protected void defineActionButton() {
+    ActionButtonManager.getInstance().begin().hide();
+  }
+
   /**
    * presenter 를 지정한다.
    */

+ 8 - 3
app/src/main/java/kr/co/zumo/app/lifeplus/view/fragment/faq/FAQFragment.java

@@ -18,6 +18,7 @@ import java.util.List;
 import kr.co.zumo.app.R;
 import kr.co.zumo.app.lifeplus.bean.api.FAQBean;
 import kr.co.zumo.app.lifeplus.manager.ActionBarManager;
+import kr.co.zumo.app.lifeplus.manager.ActionButtonManager;
 import kr.co.zumo.app.lifeplus.model.FAQModel;
 import kr.co.zumo.app.lifeplus.view.Event;
 import kr.co.zumo.app.lifeplus.view.IFAQView;
@@ -63,9 +64,6 @@ public class FAQFragment extends FragmentBase<FAQPresenter> implements IFAQView
     tabLayoutFaq = findViewById(R.id.faq_tab_layout);
     viewPagerFaq = findViewById(R.id.faq_view_pager);
     tabLayoutFaq.setTabGravity(TabLayout.GRAVITY_FILL);
-
-    buttonWriteFAQ = findViewById(R.id.button_write_faq);
-    buttonWriteFAQ.setOnClickListener(view -> presenter.onEvent(new Event.Builder(Event.FAQ).build()));
   }
 
   @Override
@@ -73,6 +71,13 @@ public class FAQFragment extends FragmentBase<FAQPresenter> implements IFAQView
     ActionBarManager.getInstance().begin().title(R.string.faq).menu().search().back().show();
   }
 
+  @Override
+  protected void defineActionButton() {
+    ActionButtonManager.getInstance().begin().pencil(floatingActionButton -> {
+      presenter.onEvent(new Event.Builder(Event.FAQ).build());
+    }).show();
+  }
+
   @Override
   protected FAQPresenter definePresenter() {
     return new FAQPresenter(getModel(FAQModel.class), this);

+ 0 - 6
app/src/main/java/kr/co/zumo/app/lifeplus/view/presenter/Presenter.java

@@ -10,7 +10,6 @@ import com.google.gson.Gson;
 
 import kr.co.zumo.app.lifeplus.ILifeCycle;
 import kr.co.zumo.app.lifeplus.manager.ActionBarManager;
-import kr.co.zumo.app.lifeplus.manager.ActionButtonManager;
 import kr.co.zumo.app.lifeplus.manager.IActionBarListener;
 import kr.co.zumo.app.lifeplus.model.IModelResult;
 import kr.co.zumo.app.lifeplus.model.Model;
@@ -46,11 +45,6 @@ public abstract class Presenter<M extends Model, V extends IView> implements ILi
     this.model.setPresenter(this);
     ActionBarManager.getInstance().setListener(this);
 
-    defineActionButton();
-  }
-
-  protected void defineActionButton() {
-    ActionButtonManager.getInstance().begin().hide();
   }
 
   @Override

+ 0 - 13
app/src/main/res/layout/fragment_faq.xml

@@ -29,19 +29,6 @@
       android:layout_width="match_parent"
       android:layout_height="match_parent"/>
 
-    <android.support.design.widget.FloatingActionButton
-      android:id="@+id/button_write_faq"
-      android:layout_width="44dp"
-      android:layout_height="44dp"
-      android:layout_alignParentEnd="true"
-      android:layout_alignParentBottom="true"
-      android:layout_gravity="bottom|end"
-      android:layout_marginEnd="22dp"
-      android:layout_marginBottom="22dp"
-      android:scaleType="center"
-      app:srcCompat="@drawable/icon_floating_inqurebtn"
-      />
-
   </RelativeLayout>