调用 show() 和 dismiss() 方法时不显示自定义加载视图

Custom loading view not showing on calling show() and dismiss() method

我正在尝试在用户点击上传以显示加载时实现自定义加载视图。调用 show() 时,它工作正常,但调用 dismiss() 时。什么都没显示

我已经完成所有谷歌搜索并在 Whosebug 上搜索了类似的问题

   public void onClick(View v) {
      switch (v.getId()){
          case R.id.socialMediaShareImage:
              getImageFromStorage();
              break;
          case R.id.socialMediaShareButton:
              catLoadingView.show(getSupportFragmentManager(),"");
              //loadingDialog = LoadingDialog.Companion.get(SocialMediaActivity.this).show();
              uploadImageToServer();
              catLoadingView.dismiss();
              break;
              default:
                  Log.i("ERROR INSWITCH","id mismatch");
      }

   }

When clicking on share button the loading  view appear and dismiss after executing the uploadImageToServer() method.


据我了解,方法 uploadImageToServer() 执行一些与网络相关的操作。如果是这样,您应该在非 UI 线程上进行。此外,在您的代码中 catLoadingView.dismiss(); 不会等到您的异步过程完成后立即隐藏加载视图。您应该使用一些回调方法来修复您的上传过程完成,然后关闭您的视图。

看起来像这样:

您的回调接口:

interface MyCallback {
    void onUploaded();
}

您的上传方式:

void upload(MyCallback callback) {
  // some async process on non-UI thread
  callback.onUploaded();
}

最后调用你的方法:

case R.id.socialMediaShareButton:
          catLoadingView.show(getSupportFragmentManager(),"");
          //loadingDialog = LoadingDialog.Companion.get(SocialMediaActivity.this).show();
          uploadImageToServer(new MyCallback() {
              runOnUiThread {
                 catLoadingView.dismiss();
              }
          });
          break;