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



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

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

   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;

最新更新