112-android的AlertDialog浅析

15 篇文章 0 订阅



之前用AlertDialog的时候
其实没有仔细研究这个东西

现在稍微研究了一下
还是很有意思的

我们搞几个方法
来测试一下AlertDialog




    public void test4(View view) {
        View inflate = View.inflate(ctx, R.layout.dialog_abc, null);
        new AlertDialog.Builder(ctx).setView(inflate).show();
    }

    public void test3(View view) {
        new AlertDialog.Builder(ctx).setView(R.layout.dialog_abc).show();
    }

    public void test2(View view) {
        new AlertDialog.Builder(ctx).setMessage("ok").show();
    }

    public void test1(View view) {
        new AlertDialog.Builder(ctx).show();
    }



先看test1
这里我们创建了AlertDialog.Builder
然后show方法展示
点击按钮我们发现,画面变暗了,但是弹框没出现
这是因为我们的dialog什么东西都没有

然后我们看test2
我们设置了message
然后点击按钮
我们发现有一个弹框,里面是一句话

然后我们看test3
我们设置了View
点击按钮
我们发现是按照我们的R.layout.dialog_abc来显示的

然后我们看test4
和test3一样的效果
所以这两个都可以用



然后我们看一下show方法的源码
        /**
         * Creates a {@link AlertDialog} with the arguments supplied to this builder and
         * {@link Dialog#show()}'s the dialog.
         */
        public AlertDialog show() {
            AlertDialog dialog = create();
            dialog.show();
            return dialog;
        }

原来Builder的show方法
依然是先create
然后再调用dialog的show方法
所以其实这是一种Builder的快捷方法



那么我们看一下create方法的使用
Builder实际上就是一个工厂
可以批量生产dialog

我们来一段代码

AlertDialog.Builder builder = null;

    @Override
    public void initViews() {
        builder = new AlertDialog.Builder(ctx).setTitle("abc");
    }

    public void test1View view) {
        builder.setMessage("AAA");
        AlertDialog dialog = builder.create();
        dialog.show();
    }

    public void test2(View view) {
        builder.setMessage("BBB");
        AlertDialog dialog = builder.create();
        dialog.show();
    }

    public void test3(View view) {
        builder.setMessage("CCC");
        AlertDialog dialog = builder.create();
        dialog.show();
    }



我们看到
builder已经有了标题abc
然后我们可以根据需要,设置message
然后create出我们想要的dialog
然后show出来
所以builder就是一个工厂,一个生产者





 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值