Selaa lähdekoodia

Fragment完善

詹子聪 5 vuotta sitten
vanhempi
commit
ae78d0af1f

+ 1 - 1
mvp/src/main/java/com/miekir/mvp/view/BaseMVPActivity.java

@@ -112,7 +112,7 @@ public abstract class BaseMVPActivity extends BaseActivity implements IView {
     }
 
 
-    public void onDataResult(DataResult result) {
+    private void onDataResult(DataResult result) {
         for (Method method : mDataMethodList) {
             try {
                 method.invoke(this, result.getCode(), result.getMessage(), result.getBean());

+ 14 - 2
mvp/src/main/java/com/miekir/mvp/view/BaseMVPFragment.java

@@ -3,6 +3,8 @@ package com.miekir.mvp.view;
 import android.os.Bundle;
 
 import androidx.annotation.Nullable;
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.Observer;
 
 import com.miekir.mvp.base.BaseFragment;
 import com.miekir.mvp.base.DataResult;
@@ -65,9 +67,19 @@ public abstract class BaseMVPFragment extends BaseFragment implements IView {
             InjectPresenter injectPresenter = field.getAnnotation(InjectPresenter.class);
             if (injectPresenter != null) {
                 try {
+                    //创建一个观察者去更新UI
+                    final Observer<DataResult> observer = new Observer<DataResult>() {
+                        @Override
+                        public void onChanged(final DataResult result) {
+                            onDataResult(result);
+                        }
+                    };
+                    MutableLiveData<DataResult> liveData = new MutableLiveData<DataResult>();
+                    liveData.observe(this, observer);
+
                     Class<? extends BasePresenter> type = (Class<? extends BasePresenter>) field.getType();
                     BasePresenter mInjectPresenter = type.newInstance();
-                    // todo
+                    mInjectPresenter.setLiveData(liveData);
                     //mInjectPresenter.attachView(this);
                     field.setAccessible(true);
                     field.set(this, mInjectPresenter);
@@ -132,7 +144,7 @@ public abstract class BaseMVPFragment extends BaseFragment implements IView {
         mDataMethodList.clear();
     }
 
-    public void onDataResult(DataResult result) {
+    private void onDataResult(DataResult result) {
         for (Method method : mDataMethodList) {
             try {
                 method.invoke(this, result.getCode(), result.getMessage(), result.getBean());