【问题标题】:how does DialogFragment affect life cycle of calling activityDialogFragment 如何影响调用活动的生命周期
【发布时间】:2014-04-08 17:38:53
【问题描述】:

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

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

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

所以我的问题是双重的:

  1. 什么时候调用doMoreStuff()?在我关闭 Fragment 以返回父 Activity 之前还是之后?
  2. 在我关闭片段返回父活动后,父活动是否会通过 onResume: 这样如果我检查片段更改的某些字段,我可以根据该状态在 onResume 中工作字段:

如下例:

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

片段被启动

setStyle(STYLE_NO_FRAME, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);

使其处于全屏模式。

【问题讨论】:

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


    【解决方案1】:

    doMoreStuff() 何时被调用?在我关闭 Fragment 以返回父 Activity 之前还是之后?

    DialogFragmentshow()方法只是提交了一个FragmentTransaction,它会异步执行,所以任何跟在它后面的方法都会立即执行。

    我关闭fragment返回父activity后,父activity是否经过onResume

    不,它没有,因为您的 Activity 一直在前台,因为没有其他 Activities 参与。

    通常,您将像使用简单的Fragments 一样使用带有DialogFragments 的回调侦听器,方法是在您的Activity 中实现回调,并在您通过该接口调用Activity 的方法时想要传递在DialogFragment 中发生的操作的结果。

    【讨论】:

    • 我想过实现一个自定义回调接口,但我希望有一个更简单的方法;这种对生命周期的捎带。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 2011-12-18
    相关资源
    最近更新 更多