调用 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.



慕田峪7331174
浏览 141回答 1
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;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java