【问题标题】:Custom loading view not showing on calling show() and dismiss() method调用 show() 和 dismiss() 方法时未显示自定义加载视图
【发布时间】:2019-01-19 12:17:02
【问题描述】:

当用户单击上传以显示加载时,我正在尝试实现自定义加载视图。当调用 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() 方法在一个新线程上工作并在其上获得回调,并且在同一个线程上调用方法dismiss()。所有与视图组件相关的方法都应该在Main thread 上调用。所以尝试在你的异步进程之后回到主线程,然后调用dismiss()
  • uploadImageToServer() 方法在 UI 线程中。我还没有创建一个新线程@David

标签: java android android-studio android-progressbar


【解决方案1】:

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

【讨论】:

  • 感谢您的回答和简单的解释。解决方案奏效了。
猜你喜欢
  • 2015-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 2017-07-21
  • 1970-01-01
  • 1970-01-01
  • 2015-07-18
相关资源
最近更新 更多