在AlertDialog DialogFragment优点[复制](DialogFragment a

2019-07-04 17:38发布

这个问题已经在这里有一个答案:

  • Android的DialogFragment VS对话框 6回答

当开发一个Android应用程序,我读过,我们建议使用DialogFragment而不是直接使用的AlertDialog显示提醒和确认。

这样做,例如,在DialogFragment的文档: http://developer.android.com/reference/android/app/DialogFragment.html

人也说,他们更喜欢这个位置: 安卓DialogFragment VS对话

我想知道这种方法的优点,因为代码变得更加复杂。

谢谢

Answer 1:

使用DialogFragment了对话:


  • 自推出API级别13的

    所述的ShowDialog从活性的方法弃用 。 调用代码对话框别处是不可取的,因为你将不得不管理对话框自己(例如,方向变化)。 不使用的ShowDialog将导致偶然的例外,该对话框不会链接到任何活动。

    请注意有关的ShowDialog:

    对话框的参考:活动提供便利,来管理创建,保存和对话的恢复。 见onCreateDialog(INT),onPrepareDialog(INT,对话)的ShowDialog(INT),和dismissDialog(INT)。 如果使用这些方法,getOwnerActivity()将返回管理该对话框中的活动。

  • DialogFragment和AlertDialog的区别

    有一件事阅读您的问题时想到的。 他们是这么多不同? 一个DialogFragment是相当类似的对话,它只是一个包裹里面的片段。 从有关DialogFragment Android的参考:

    一个DialogFragment是显示一个对话框窗口,漂浮在它的活动窗口的顶部片段。 这一片段含有一个对话对象,其基于所述片段的状态显示为合适的。 对话框控制(决定何时显示,隐藏,关闭它)应通过API来完成这里 ,不对话框上直接调用。

  • 其他注意事项

    • 片段在Android框架的自然演进由于不同屏幕尺寸的设备的多样性。
    • DialogFragments和片段在支持库,这使得该类Android中的所有当前使用的版本可用可用。


Answer 2:

这很简单。
DialogFragment是一个片段。 那么什么可以片段提供给您,而其他对象不能?
它的生命周期回调。
因此,与DialogFragment,它可以是非常强大的,让你的代码干净多了。
你见过窗口泄漏,如果当其活性被破坏掉了没有关闭对话框? 因此,为了防止这种情况,你有没有试图关闭该对话框的onPause()被调用时? 因此,要做到这一点,你曾经不得不作出这样的对话的一类级别对象的引用?
随着DialogFragment,这一切都处理。
你会得到所有的生命周期回调。
然后,你可以到对话框提供更多的智能,使之做一些聪明的工作,对自己,而不是活动,告诉它做什么。



文章来源: DialogFragment advantages over AlertDialog [duplicate]