gpt4 book ai didi

android - 如何使用 Retrofit 2 更正 fragment 内的句柄 Dialog.dismiss()

转载 作者:行者123 更新时间:2023-11-29 19:48:58 27 4
gpt4 key购买 nike

我正在使用 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();
}
}

但是这种方法效果不佳,因为用户可能会旋转或离开当前 Activity,从而导致此错误:

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)

在这种情况下,我该如何正确关闭对话框?

最佳答案

您应该在 Fragment 与其 Activity 分离时关闭对话框,或者添加一个检查以查看 Fragment 是否仍然附加。下面的示例调用 isAdded()检查这个。

onResponse() {
if (isAdded()) {
mProgress.dismiss();
}
}

关于android - 如何使用 Retrofit 2 更正 fragment 内的句柄 Dialog.dismiss(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37350120/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com