我正在使用Retrofit 2向Fragment中的服务器发出POST请求,如下所示:
Call<MyResponse> call = apiService.myPost(params);
call.enqueue(myCallback);
mProgress = ProgressDialog.show(getActivity(), "Working", "Working"", true);
我想在请求完成后关闭ProgressDialog,如您在此处看到的:
class myCallback {
onResponse() {
mProgress.dismiss();
}
onFailture() {
mProgress.dismiss();
}
}
但是,此方法无法正常工作,因为用户可能旋转或离开当前活动,从而导致此错误:
Fatal Exception: java.lang.IllegalArgumentException: View=com.android.internal.policy.impl.PhoneWindow$DecorView{1ec6c6d0 V.E..... R.....ID 0,0-513,242} not attached to window manager
at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:396)
at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:322)
at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:116)
at android.app.Dialog.dismissDialog(Dialog.java:341)
at android.app.Dialog.dismiss(Dialog.java:324)
在这种情况下,如何正确关闭对话框?
当片段从其活动中分离时,您应该关闭该对话框,或者添加检查片段是否仍被连接的对话框。下面的示例调用iwego()进行检查。
onResponse() {
if (isAdded()) {
mProgress.dismiss();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句