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

时间:2014-04-08 17:38:53

标签: android android-layout android-fragments dialog android-dialogfragment

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

假设启动片段的方法是

private void launchFragment(){
    ConfirmationDialog confirm = new ConfirmationDialog();
    confirm.show(getSupportFragmentManager(), "confirm");
    doMoreStuff();
}

所以我的问题有两个:

  1. 何时调用doMoreStuff()?在我关闭片段以返回父活动之前或之后?
  2. 关闭片段以返回父活动之后,父活动是否通过onResume:这样如果我检查片段更改了某些字段,我可以根据其状态在onResume上工作字段:
  3. 如下例所示:

    @Override
    public void onResume() {
       super.onResume();
       if(dialogFragmentChangedThis){
          workSomeMore();
       }
    }
    

    使用

    启动片段
    setStyle(STYLE_NO_FRAME, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
    

    以便它处于全屏模式。

1 个答案:

答案 0 :(得分:6)

  

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

DialogFragment的{​​{1}}方法只提交一个show(),它将以异步方式执行,因此后面的任何方法都会立即执行。

  

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

不,它没有,因为您的FragmentTransaction一直处于前景,因为没有其他Activity参与。

通常情况下,您将使用Activities的Callbacks听众与简单的DialogFragment一样,通过在Fragment中实施回调并致电Activity当你想要传递Activity中发生的动作的结果时,通过该界面的方法。