14

我已经阅读了几个 stackoverflow.com 的答案,但仍然看不到使用 DialogFragment 相对于简单的 AlertDialog 的优势。显然,我有两种策略:

a) 使用 AlertDialog.Builder 配置 AlertDialog,.create() 它,然后在我的 Activity 中(在某些按钮处理程序中)使用 .show(),或者

b)子类DialogFragment,在onCreateDialog()中编写相同的AlertDialog构建代码(除了我只返回.create(),然后在我的Activity中,实例化一个DialogFragment,并显示它。

输出看起来相同。

无论哪种方式,我都没有使用过时的代码——我将 .show() 与 AlertDialog 或 DialogFragment 一起使用。当我使用其他尺寸的设备时有优势吗?或者有什么意义...

感谢您的任何见解,

迈克尔

4

2 回答 2

27

DialogFragment 为您处理许多生命周期管理案例,包括配置更改(例如屏幕旋转)和如果您的应用程序的进程在后台被终止并且用户稍后返回它时的状态恢复。如果您不使用 DialogFragment,则需要以另一种方式处理此类情况。

于 2013-02-10T22:33:33.373 回答
2

除了@adamp 所说的之外,由于DialogFragment正在获取自己的生命周期回调,因此它将负责其生命周期,因此您的活动将不负责告诉它该做什么。

例如,当活动结束时,你的活动应该告诉对话框dimiss(),否则你会leaked the window在 logcat 中看到它有错误。

于 2017-11-06T07:02:52.393 回答