如何在活动的onStart()中关闭DialogFragment?

时间:2018-03-04 06:43:06

标签: java android user-interface android-dialogfragment

我想要一些这样的行为:

当我向服务器发出请求时,会出现进度对话框。当我收到回复或用户取消呼叫时(通过按Home或Back按钮),对话框消失。

我目前正在使用Retrofit进行网络制作,并制作了一些易于使用的包装类。

首先,我使用回调来解除对话,如下所示:

call.enqueue(new Callback<ResponseVO>() {
    @Override
    public void onFailure(Call<ResponseVO> call, Throwable t) {
        t.printStackTrace();

        if (loadingDialog != null && loadingDialog.isVisible()) {
            loadingDialog.dismissAllowingStateLoss();
        }
    }
}

它适用于Back键,但在主页按钮时没有帮助我。所以我决定在我的DialogFragment中处理它。

在onStop()方法中,我取消了Retrofit调用。

@Override
public void onStop() {
    super.onStop();
    call.cancel();
    Log.d("NetworkProgressDialog", "onStop called");
}

在onStart()方法中,我检查是否取消了调用并关闭了对话框。

@Override
public void onStart() {
    super.onStart();
    if (call == null || call.isCanceled()) {
        Log.d("NetworkProgressDialog", "call is canceled. dismiss dialog.");
        dismiss();
    }
    Log.d("NetworkProgressDialog", "onStart called");
}

这似乎有效,但是如果我按Home并再次重新打开应用程序,Logcat会说“onStart called”并且没有显示对话框。当我在那之后按Back时,会调用onStop()。

所以我只是想知道我是否可以在onStart()或onPause()中关闭我的对话框。如果不可能,我该如何实现?任何帮助将不胜感激!

0 个答案:

没有答案