为啥要使用 DialogFragment?

Posted

技术标签:

【中文标题】为啥要使用 DialogFragment?【英文标题】:Why to use DialogFragment?为什么要使用 DialogFragment? 【发布时间】:2012-08-22 19:01:18 【问题描述】:

基本上对话框会在后台停用活动。所以DialogFragment 做同样的事情增加了复杂性。那么尽管Dialog 的各种子类都可用,为什么还要选择DialogFragment

【问题讨论】:

【参考方案1】:

Fragments 在您的活动中使用,但要使用FragmentTransaction 将片段呈现为对话框(窗口)并跟进片段的生命周期,您需要使用DialogFragment。但是,您也可以使用简单的Dialog,但这与片段的生命周期无关。

根据谷歌文档:

DialogFragment 仍然可以选择性地用作普通片段,如果 想要的。如果您有一个片段,在某些情况下,这很有用 应显示为对话框,其他内容应嵌入更大的 UI。

【讨论】:

【参考方案2】:

FragmentDialog 是一个片段,可以:

    用作片段,例如:

    FragmentTransaction trans = getSupportFragmentManager().beginTransaction();
    trans.add(R.id.navigation_fragment, mFriendFragment);
    trans.commit();
    

    用作对话框,例如:

    FragmentManager fm = getFragmentManager();
    UnsubscribeTabletFragment fragment = new UnsubscribeTabletFragment();
    fragment.show(fm, "dialog");
    

因此,如果您有一个片段,并且该片段有时用作片段,有时用作对话框,那么您应该使用这个。

【讨论】:

【参考方案3】:

DialogFragment 允许在您的应用程序上重用对话框的一部分。就像片段为你的布局做的一样。

这里有一篇关于 DialogFragment 的好文章: http://android-developers.blogspot.fr/2012/05/using-dialogfragments.html

【讨论】:

【参考方案4】:

当您的 android 应用程序中已经使用 Fragment 进行了动态布局时,您需要通过操作按钮单击或其他单击在对话框中/在对话框中使用它,所以这次 dialogFragment 比普通对话框更方便。

【讨论】:

以上是关于为啥要使用 DialogFragment?的主要内容,如果未能解决你的问题,请参考以下文章

当我们有 UPnP 时为啥要拨号(发现和启动)?

Android:为啥 DialogFragment 在方向更改时返回空指针

Android为啥推荐用DialogFragment创建Dialog?

DialogFragment findFragmentByTag 返回 null

DialogFragment样式实现

DialogFragment: DialogFragment的一些理解