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

如果我从一个活动启动一个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的方法.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...