KingJA/LoadSir

在 show DefalutCallback 之前设置showCallback 会被 DefaultCallback 覆盖

JohnsonJLi opened this issue · 4 comments

横竖屏切换的时候 出现这个问题

LoadService.initCallback(LoadSir.Builder builder)

    new Handler().post(new Runnable() {
        @Override
        public void run() {
            if (defalutCallback != null) {
                loadLayout.showCallback(defalutCallback);
            }
        }
    });

执行了 ViewModel 回复数据 showSuccess 之后 被设置的 DefaultCallback (LoadingCallback) 覆盖,导致一直显示 DefaultCallback

@JohnsonJLi 你好,如果你想避免横竖屏切换时重启Activity的话,可以尝试在AndroidManifest.xml中对应Activity下加入:

android:configChanges="orientation|keyboardHidden|screenSize"

我现在有两种方案吧

  1. 不使用 DefaultCallback, 在base基类设置LoadSir时调用 LoadingCallback

  2. 新建一个boolean变量判断是否设置过Callback

     if (defalutCallback == null) {
         return;
     }
     new Handler().post(new Runnable() {
         @Override
         public void run() {
             if (loadLayout.isFirst()) {
                 loadLayout.showCallback(defalutCallback);
             }
         }
     });
    

这样可以解决 横竖屏切换(Fragment 设置了 setRetainInstance(true)) , 切换夜间模式, ViewModel 重置数据时 showSuccess 被 defalutCallback 覆盖的问题.

@KingJA 感谢使用,对于LoadSir升级如果有什么好的想法和建议,欢迎提出 :p