如果我从一个活动启动一个DialogFragment,当我关闭DialogFragment时会发生什么?活动是否通过onResume状态?或者调用是否是正常的
java调用,以便在DialogFragment关闭之前永远不会执行下一行?
假设启动我的片段的方法是
private void launchFragment(){ ConfirmationDialog confirm = new ConfirmationDialog(); confirm.show(getSupportFragmentManager(),"confirm"); doMoreStuff(); }
所以我的问题是双重的:
>什么时候调用doMoreStuff()?在关闭片段之前或之后返回父活动?
>关闭片段以返回父活动后,父活动是否通过onResume:这样如果我检查片段更改了某个字段,我可以根据该字段的状态在onResume中工作:
如下例所示:
@Override public void onResume() { super.onResume(); if(dialogFragmentChangedThis){ workSomeMore(); } }
片段是用.启动的
setStyle(STYLE_NO_FRAME,android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
这样它就处于全屏模式.
解决方法
When is doMoreStuff() called? Before or after I close the fragment to return to the parent activity?
DialogFragment的show()方法只提交一个FragmentTransaction,它将异步执行,因此后面的任何方法都会立即执行.
After I close the fragment to return to the parent activity,does the parent activity go through onResume
不,它没有,因为您的活动始终处于前台,因为没有涉及其他活动.
通常,您将使用带有DialogFragments的Callbacks侦听器,就像使用简单片段一样,通过在Activity中实现Callbacks,并在想要传递DialogFragment中发生的操作结果时通过该接口调用Activity的方法.