为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪7331174 2022-05-12 15:16:46
当用户单击上传以显示加载时,我正在尝试实现自定义加载视图。当调用 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 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

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


查看完整回答
反对 回复 2022-05-12
  • 1 回答
  • 0 关注
  • 140 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号