当用户单击上传以显示加载时,我正在尝试实现自定义加载视图。当调用 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()
执行一些与网络相关的操作。如果是这样,则应在非 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;