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

时间:2019-01-19 12:17:02

标签: java android android-studio android-progressbar

当用户单击上载以显示加载时,我正在尝试实现自定义加载视图。当调用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.


1 个答案:

答案 0 :(得分:0)

据我了解,方法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;