DialogFragment优于AlertDialog
在开发Android应用程序时,我已经读过build议使用DialogFragment
而不是直接使用AlertDialog
来显示警报和确认。
例如,在DialogFragment的文档上完成这个工作: http : //developer.android.com/reference/android/app/DialogFragment.html
人们也说他们更喜欢这里: Android的DialogFragment与对话框
我想知道这种方法的优点,因为代码变得更复杂。
谢谢
在Dialog上使用DialogFragment:
-
自引入API级别13以来 :
来自Activity的showDialog方法已被弃用 。 在代码的其他地方调用一个对话框是不可取的,因为你将不得不自己pipe理对话框(例如方向改变)。 不使用showDialog会导致偶尔的exception,对话框没有链接到任何Activity。
关于showDialog的注意事项:
对话框参考:活动提供了一个设施来pipe理对话框的创build,保存和恢复。 请参阅onCreateDialog(int),onPrepareDialog(int,Dialog),showDialog(int)和dismissDialog(int)。 如果使用这些方法,getOwnerActivity()将返回pipe理此对话框的Activity。
-
DialogFragment和AlertDialog之间的区别
在阅读你的问题时想到一件事。 他们差别很大吗? DialogFragment与Dialog非常相似,只是包装在一个片段中。 从Android参考有关DialogFragment:
DialogFragment是一个片段,它显示一个对话窗口,并在其活动窗口之上浮动。 这个片段包含一个Dialog对象,它根据片段的状态适当地显示它。 对话框的控制(决定何时显示,隐藏,解除)应该通过这里的API完成,而不是直接调用对话框。
-
其他说明
- 由于具有不同屏幕尺寸的设备的多样性,碎片是Android框架中的自然演变。
- 支持库中提供了DialogFragments和Fragments,使得该类可以在所有当前使用的Android版本中使用。
这很容易。
DialogFragment是一个片段。 那么一个片段可以提供给你什么,而其他的东西不能?
这是生命周期callback。
因此,使用DialogFragment,它可以非常强大,使您的代码更清洁。
如果在活动被破坏时没有closures对话框,你有没有看到过窗口泄漏? 所以为了防止这种情况,你有没有试图在onPause()被调用时closures对话框? 所以要做到这一点,你有没有把这个对话框引用到一个类对象?
使用DialogFragment,全部处理完毕。
你得到所有的生命周期callback。
然后,你可以提供更多的对话的智慧,使它自己做一些聪明的工作,而不是活动告诉它做什么。