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