DialogFragment is gone after returning back from another activity

时间:2023-03-08 20:59:34

基本情景如下:

在DialogFragment中单击一个按钮跳转到another Activity做一些逻辑处理,然后将返回的结果回显到该DialogFragment上。

处理逻辑是:

在DialogFragment的Activity的onActivityResult方法中再次调用showDialog()方法

private void showDialog() {
if (modifyDialog==null) {
modifyDialog = ModifyMemberDialog.getDialogInstance();
modifyDialog.setOnConfirmListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
doModifyRequest(modifyDialog.getCurrentPId());
}
});
fm = getSupportFragmentManager();
}
modifyDialog.show(fm, "ModifyMember");
}

结果是:

当从activity返回后,dialog显示了,但是却很快消失了。

另辟蹊径,在Activity的生命周期的onResume中调用showDialog()方法,但是结果依然是闪退。

在*上搜索了一下,找到了一个方案:

使用handler.postDelay()方法设置一定延时,来执行showDialog()方法,amazing, it's work! (http://*.com/questions/26632628/dialogfragment-is-gone-after-returning-back-from-another-activity

onActivityResult(...){

...handler.postDelay()

}

当然,这里也有不好的地方,那就是Dialog上的数据需要手动记录与加载

未完待续...