Skip to content

Commit 27931b0

Browse files
AriesHooAriesHoo
AriesHoo
authored and
AriesHoo
committed
修复:修改BasisFragment对用户可以见回调避免View未加载造成崩溃
1 parent b2746a1 commit 27931b0

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

app/src/main/java/com/aries/library/fast/demo/module/main/HomeFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ public void onStop() {
277277
@Override
278278
public void onDestroy() {
279279
super.onDestroy();
280-
if(mTitleBarViewHelper!=null){
280+
if (mTitleBarViewHelper != null) {
281281
mTitleBarViewHelper.onDestroy();
282282
}
283283
}

library/src/main/java/com/aries/library/fast/basis/BasisFragment.java

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
* 1、新增控制是否为FragmentActivity的唯一Fragment 方法以优化懒加载方式
3434
* 2、增加解决StatusLayoutManager与SmartRefreshLayout冲突解决方案
3535
* 3、2018-7-6 17:12:16 删除IBasisFragment 控制是否单Fragment 通过另一种方式实现
36+
* 4、2019-1-29 18:33:10 修改对用户可以见回调{@link #setUserVisibleHint(boolean)}{@link #onHiddenChanged(boolean)} (boolean)}
3637
*/
3738
public abstract class BasisFragment extends RxFragment implements IBasisView {
3839

@@ -167,19 +168,42 @@ private boolean isVisibleToUser(BasisFragment fragment) {
167168
* 不在viewpager中Fragment懒加载
168169
*/
169170
@Override
170-
public void onHiddenChanged(boolean hidden) {
171+
public void onHiddenChanged(final boolean hidden) {
171172
super.onHiddenChanged(hidden);
172-
onVisibleChanged(!hidden);
173+
if (!mIsViewLoaded) {
174+
RxJavaManager.getInstance().setTimer(10)
175+
.compose(this.<Long>bindUntilEvent(FragmentEvent.DESTROY))
176+
.subscribe(new FastObserver<Long>() {
177+
@Override
178+
public void _onNext(Long entity) {
179+
onHiddenChanged(hidden);
180+
}
181+
});
182+
} else {
183+
onVisibleChanged(!hidden);
184+
}
185+
173186
}
174187

175188
/**
176189
* 在viewpager中的Fragment懒加载
177190
*/
178191
@Override
179-
public void setUserVisibleHint(boolean isVisibleToUser) {
192+
public void setUserVisibleHint(final boolean isVisibleToUser) {
180193
super.setUserVisibleHint(isVisibleToUser);
181194
mIsInViewPager = true;
182-
onVisibleChanged(isVisibleToUser);
195+
if (!mIsViewLoaded) {
196+
RxJavaManager.getInstance().setTimer(10)
197+
.compose(this.<Long>bindUntilEvent(FragmentEvent.DESTROY))
198+
.subscribe(new FastObserver<Long>() {
199+
@Override
200+
public void _onNext(Long entity) {
201+
setUserVisibleHint(isVisibleToUser);
202+
}
203+
});
204+
} else {
205+
onVisibleChanged(isVisibleToUser);
206+
}
183207
}
184208

185209
/**

0 commit comments

Comments
 (0)