DialogFragment对话框的最佳实现方式

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

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;
            
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值