DialogFragment如何影响调用活动的生命周期

Kat*_*lon 8 android dialog android-layout android-fragments android-dialogfragment

如果我从一个活动启动DialogFragment,当我关闭DialogFragment时会发生什么?活动是否通过onResume状态?或者是正常java调用的调用,以便在DialogFragment关闭之前永远不会执行下一行?

假设启动我的片段的方法是

private void launchFragment(){
    ConfirmationDialog confirm = new ConfirmationDialog();
    confirm.show(getSupportFragmentManager(), "confirm");
    doMoreStuff();
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是双重的:

  1. 何时被doMoreStuff()召唤?在关闭片段之前或之后返回父活动?
  2. 关闭片段以返回父活动之后,父活动是否通过onResume:这样如果我检查了片段更改的某个字段,我可以根据该字段的状态在onResume中工作:

如下例所示:

@Override
public void onResume() {
   super.onResume();
   if(dialogFragmentChangedThis){
      workSomeMore();
   }
}
Run Code Online (Sandbox Code Playgroud)

片段是用.启动的

setStyle(STYLE_NO_FRAME, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
Run Code Online (Sandbox Code Playgroud)

这样它就处于全屏模式.

Ego*_*gor 6

什么时候调用doMoreStuff()?在关闭片段之前或之后返回父活动?

DialogFragmentshow()方法只是提交一个FragmentTransaction,它将异步执行,因此后面的任何方法都会立即执行.

关闭片段以返回父活动后,父活动是否通过onResume

不,它没有,因为你Activity一直处于前景,因为没有其他Activities参与.

通常你会DialogFragment像使用简单Fragment的s那样使用Callbacks监听器,通过实现你的Callbacks,Activity并通过调用你Activity的方法通过该接口,当你想传递一个动作的结果时DialogFragment.