Android:dialogFragment.isVisible()不起作用

时间:2014-06-04 21:29:47

标签: android android-dialogfragment

我在使用DialogFragment时处理解雇/状态损失地狱。为了避免无效解雇,我要覆盖dismiss方法:

@Override
public void dismiss() {
    if (this.isVisible()) {
        super.dismiss();
    }
}

但即使对话框实际上可见,isVisible()也是false。这就是isVisible()方法在其文档中所说的内容:

  

如果片段当前对用户可见,则返回true。这个   意思是:(1)已添加,(2)其视图附在窗口上,   (3)不隐藏。

因此,如果我将方法更改为:

@Override
public void dismiss() {
    // This is almost the same as isVisible(), but the latter doesn't
    // work
    if (this.isAdded() && !this.isDetached() && !this.isHidden()) {
        super.dismiss();
    }
}

然后它完美地运作。这是预期的行为吗?

使用Ion的HTTP请求后执行所有操作:

DialogFragment dialog = DialogFragment.newInstance(..., ...);

Ion.with(context, url)
.setCallback(new FutureCallback<JsonObject>() {
    @Override
    public void onCompleted(Exception e, JsonObject result) {
        dialog.dismiss()
    }
});

dialog.show(getFragmentManager(), "tag");

0 个答案:

没有答案