注册view布局时会出现问题
hegaojian opened this issue · comments
鸡你太美 commented
如题,首先我在 Application中注册了
LoadSir.beginBuilder()
.addCallback(LoadingCallback())//加载
.addCallback(ErrorCallback())//错误
.addCallback(EmptyCallback())//空
.setDefaultCallback(SuccessCallback::class.java)//设置默认加载状态页
.commit()
在BaseActivity中,我的根界面XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorBackGround"
android:orientation="vertical">
<ViewStub
android:id="@+id/vsToolBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout="@layout/layout_toolbar" />
<FrameLayout
android:id="@+id/baseContentView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
layoutId是子activity传递的布局Id,在BaseActivity的 onCreate生命周期中,我调用了initStatusViewf方法,然后注册 baseContentView
private fun initStatusView() {
baseContentView.addView(LayoutInflater.from(this).inflate(layoutId, null))
uiStatusManger = LoadSir.getDefault().register(baseContentView) {
//点击重试时触发的操作
uiStatusManger.showLoading()
onLoadRetry()
}
}
现在的问题是,进入子Activity,在oncreated 方法中 我主动设置错误界面 空界面 加载界面都会无效,界面会展示一个成功界面的布局,我后面在稍等一会去设置他为 错误界面 空界面 加载界面都是没问题了,就首次会无效
我看了下是因为 在LoadService类中 你注册时设置了一个默认的defalutCallback,在这个区间,我也设置了一个 错误 空 加载界面时就会被你的给覆盖掉
private void initCallback(LoadSir.Builder builder) {
List<Callback> callbacks = builder.getCallbacks();
final Class<? extends Callback> defalutCallback = builder.getDefaultCallback();
if (callbacks != null && callbacks.size() > 0) {
for (Callback callback : callbacks) {
loadLayout.setupCallback(callback);
}
}
new Handler().post(new Runnable() {
@Override
public void run() {
if (defalutCallback != null) {
loadLayout.showCallback(defalutCallback);
}
}
});
}
现在我只能延迟我的 init方法去暂时解决,目前设置了60毫秒延迟加载,不知道作者是否有更好的解决方式呢