DialogFragment实现对话框
对话框在项目正很常见,以前做项目我基本上都是用AlertDialog实现对话框。DialogFragment出现以后,我就很少再用其他方式实现对话框交互了。几乎所有项目中的弹框都通过DialogFragment实现。
这篇文章从以下几个角度总结使用DialogFragment:
- 生命周期
- 基本对话框实现
- Alert Dialog实现
DialogFragment的生命周期
DialogFragment做了各种各样的事情来处理碎片的生命周期,DialogFragment需要保证碎片和Dialog显示过程中保持一致的状态,DialogFragment监视从对话框中删除事件,并负责在发生时删除它自己的状态。我们必须使用show方法来为UI添加一个对话片段的实例,当对话框被删除时,这些记录的对话框片段应该被删除。
DialogFragment有完整的生命周期处理,我们不需要关心如何控制其生命周期。
Basic Dialog
DialogFragment作为基本的Dialog使用,我们可以自由扩展其样式,布局。下面是一个DialogFragment的基本用法:
public class MyDialogFragment extends DialogFragment {
/**
* 定义一个标识
*/
private int mNum;
/**
* Create a new instance of MyDialogFragment, providing "num"
* as an argument.
*/
public static MyDialogFragment newInstance(int num) {
MyDialogFragment f = new MyDialogFragment();
// Supply num input as an argument.
Bundle args = new Bundle();
args.putInt("num", num);
f.setArguments(args);
return f;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mNum = getArguments().getInt("num");
// Pick a style based on the num.
int style = DialogFragment.STYLE_NORMAL, theme = 0;
switch ((mNum-1)%6) {
case 1:
style = DialogFragment.STYLE_NO_TITLE;
break;
case 2:
style = DialogFragment.STYLE_NO_FRAME;
break;
case 3:
style = DialogFragment.STYLE_NO_INPUT;
break;
case 4:
style = DialogFragment.STYLE_NORMAL;
break;

本文详述了如何利用DialogFragment替代AlertDialog实现对话框,包括DialogFragment的生命周期管理、基本对话框及Alert Dialog的创建。通过示例代码展示了DialogFragment的使用方法,强调其灵活性和在项目中的应用价值。
最低0.47元/天 解锁文章
6339

被折叠的 条评论
为什么被折叠?



