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上的数据需要手动记录与加载。
未完待续...