首页 > 试题广场 >

关于AlertDialog描述错误的是( ).

[单选题]
关于AlertDialog描述错误的是( ).
  • show()方法创建并显示对话框
  • AlertDialog.Builder的create() 和show()方法都返回AlertDialog对象
  • AlertDialog不能直接用new关键字构建对象,而必须使用其内部类Builder
  • create()方法创建并显示对话框
推荐
D
-----------------------
本题背景:
AlertDialog的构造方法被声明为protected,所以不能直接使用new关键字来创建AlertDialog类的对象实例。要想创建AlertDialog对话框,需要使用Builder类,该类是AlertDialog类中定义的一个内嵌类。因此必须创建AlertDialog.Builder类的对象实例,然后再调用show()来显示对话框。

    例如:    AlertDialog.Builder db= new Builder(this);

                    db..create().show();
------------------------
B项解释:

和:

编辑于 2015-12-02 19:48:16 回复(1)
A:show()方法最终还是创建并显示。附源码:
 public AlertDialog show() {
            AlertDialog dialog = create();
            dialog.show();
     return dialog;
        }
B:查看源码,正确;
C:因为其构造器都是保护的,所以不允许非子类调用;
D:create()方法只创建,不显示;

编辑于 2015-09-15 16:16:50 回复(1)
B选项是这样的,返回值都是AlertDialog

发表于 2015-08-15 22:59:55 回复(0)
AlertDialog类具有show方法,其继承自Dialog类;这个方法仅仅显示对话框,其返回类型为void。

AlertDialog.Builder类也具有show方法,其立即创建AlertDialog并显示,返回类型为AlertDialog。

本题的A选项说的是AlertDialog.Builder类的show方法——巨坑啊……
发表于 2016-12-03 21:25:25 回复(0)
create只创建不显示 show创建同时显示
发表于 2021-12-09 00:04:44 回复(0)
我硬是在这道题上栽了好几次了
发表于 2018-10-30 13:55:40 回复(0)
A 选项其实是有待商榷的,AlertDialog 的 show 方法继承自 Dialog 类的同名方法,这个方法是没有「创建」的过程的,很多朋友粘贴出来的代码,是 AlertDialog.Builder.show() 方法,而 A 选项说的是仅仅说 show 方法,没有说是谁的 show 方法。
发表于 2018-04-28 23:37:44 回复(0)
dialog.create只创建一个dialog。
真正显示dialog则需要调用dialog.show()方法
发表于 2017-09-17 20:27:40 回复(0)
看源码,才知道,show()方法内部调了一次create方法
发表于 2017-06-05 17:04:35 回复(0)

这个题目问题很大,别纠结...... A有歧义,D必错,单选题,故选D

A,有歧义,create和show,Builder和Dialog都有,这里没指明。

/// Builder的show方法
public AlertDialog show() {
    final AlertDialog dialog = create(); 
    dialog.show(); 
    return dialog; 
}

明显,先create,然后show,最后将AlertDialog返回;但同时这里的create是Builder的,并不是Dialog的。
因Dialog的create和show代码量多,不贴了,大家自己可以去看。Dialog的show,只管show,并不会像Builder.show那样先create,而且返回值是Void.

B,说的很明白,是Builder的,正确。

C,前面“黑马有点白009”的解释很明白,正确。

D,也没有指明是Dialog,还是Builder,但是无论Dialog还是Builder,他们的create都只负责了create。明显错误!

发表于 2017-03-22 15:59:28 回复(0)
只是创建并没有显示
发表于 2016-09-02 20:01:31 回复(0)
要区分Dialog和AlertDialog的show方法,Dialog的show方法是void的,AlertDialog是返回AlertDialog对象的
发表于 2016-08-25 11:43:54 回复(0)
A选项应该是有点错的
发表于 2016-07-25 16:48:23 回复(0)
show好像是先创建再显示吧。
发表于 2016-05-26 15:44:53 回复(0)
a是只显示,实际是创建并显示,这题有点问题啊
发表于 2016-04-20 09:59:24 回复(0)
D,ABC是正确的,

发表于 2015-12-02 15:20:04 回复(0)
A show方***调用create方法
发表于 2015-08-24 17:17:18 回复(1)
show()返回的是void
发表于 2015-06-25 10:31:09 回复(2)
D
发表于 2015-04-06 13:16:40 回复(0)
D
发表于 2015-04-05 17:58:07 回复(0)
D 只能创建不能显示
发表于 2015-04-03 14:31:26 回复(0)