DialogFragment is gone after returning back from another activity

基本情景如下:

在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()方法,但是结果依然是闪退。

 

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

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

 

onActivityResult(...){

...handler.postDelay()

}

 

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

 

未完待续...

posted @ 2016-06-02 14:37  ithaibo  阅读(329)  评论(0编辑  收藏  举报
请留下你的高见