diff --git a/app/src/main/java/cn/droidlover/xdroidmvp/demo/present/PBasePager.java b/app/src/main/java/cn/droidlover/xdroidmvp/demo/present/PBasePager.java index 3be59c3..6e5892c 100644 --- a/app/src/main/java/cn/droidlover/xdroidmvp/demo/present/PBasePager.java +++ b/app/src/main/java/cn/droidlover/xdroidmvp/demo/present/PBasePager.java @@ -17,6 +17,9 @@ public class PBasePager extends XPresent { public void loadData(String type, final int page) { + if (!hasV()) { + return; + } Api.getGankService().getGankData(type, PAGE_SIZE, page) .compose(XApi.getApiTransformer()) .compose(XApi.getScheduler()) @@ -24,12 +27,16 @@ public void loadData(String type, final int page) { .subscribe(new ApiSubscriber() { @Override protected void onFail(NetError error) { - getV().showError(error); + if (hasV()) { + getV().showError(error); + } } @Override public void onNext(GankResults gankResults) { - getV().showData(page, gankResults); + if (hasV()) { + getV().showData(page, gankResults); + } } }); } diff --git a/mvp/src/main/java/cn/droidlover/xdroidmvp/mvp/XPresent.java b/mvp/src/main/java/cn/droidlover/xdroidmvp/mvp/XPresent.java index 8d7fea7..4835742 100644 --- a/mvp/src/main/java/cn/droidlover/xdroidmvp/mvp/XPresent.java +++ b/mvp/src/main/java/cn/droidlover/xdroidmvp/mvp/XPresent.java @@ -16,17 +16,14 @@ public void attachV(V view) { @Override public void detachV() { - if (v.get() != null) { + if (v != null) { v.clear(); + v = null; } - v = null; } protected V getV() { - if (v == null || v.get() == null) { - throw new IllegalStateException("v can not be null"); - } - return v.get(); + return v == null ? null : v.get(); } diff --git a/test/src/main/java/cn/droidlover/xdroidmvp/test/mvp/multi_p/PMulti.java b/test/src/main/java/cn/droidlover/xdroidmvp/test/mvp/multi_p/PMulti.java index 2314505..5faa6bc 100644 --- a/test/src/main/java/cn/droidlover/xdroidmvp/test/mvp/multi_p/PMulti.java +++ b/test/src/main/java/cn/droidlover/xdroidmvp/test/mvp/multi_p/PMulti.java @@ -9,6 +9,8 @@ public class PMulti extends XPresent { public void loadData() { - getV().showError(new IllegalStateException("")); + if (hasV()) { + getV().showError(new IllegalStateException("")); + } } }