之前用AlertDialog的时候
其实没有仔细研究这个东西现在稍微研究了一下
还是很有意思的我们搞几个方法
来测试一下AlertDialogpublic 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;@Overridepublic 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就是一个工厂,一个生产者