在Google Android 开发入门指南(第2版)
第75页,12.3实体对话框
--------------------------------------------
private void openOptionsDialog(){
    new AlterDialog.Builder(Bmi.this)
    .setTitle("关于Android BMI")
    .setMessage("Android BMI Calc")
    .show();
}---------------------------------------------请问为什么new 后面怎么可以这么用。。我是java初学者,不是很明白一般不是 "类名 对象名=new 类名(参数);" 吗怎么可以有这种new A().B().C()  这样的...

解决方案 »

  1.   

    这是匿名对象的用法。参考:
    Java中的匿名对象
      

  2.   

    new AlterDialog.Builder(Bmi.this)
      .setTitle("关于Android BMI")
      .setMessage("Android BMI Calc")
      .show();这句话的意思就是创建一个对话框 标题是 关于Android BMI 内容为 Android BMI Calc . show()就是显示在屏幕中。
    有关对话框的详解我写过一个博客 欢迎大家阅读, 希望可以帮助到你喔 。。(*^__^*) 嘻嘻
    http://blog.csdn.net/xys289187120/article/details/6601613
      

  3.   


    我想问的是new A().B().C()  可以连续两个" . "?
      

  4.   

    new AlterDialog.Builder(Bmi.this)
       .setTitle("关于Android BMI")
       .setMessage("Android BMI Calc")
       .show();
    第一,Builder是AlterDialog的静态内部类,所以new AlterDialog.Builder(Bmi.this)是new出一个AlterDialog的静态内部类Builder的对象。
    其次,setTitle("关于Android BMI")、setMessage("Android BMI Calc")
    这几个方法的返回值都是调用这个方法的对象本身,即return this.
    其三,还需要调用creat()方法创建AlterDialog对象,才能调用AlterDialog的show()方法吧。AlterDialog主要用到Builder(建造者模式)设计模式,将对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。去看下源代码,你会更清楚。
      

  5.   

    也就是说new AlterDialog.Builder(Bmi.this)
       .setTitle("关于Android BMI")返回的还是new AlterDialog.Builder(Bmi.this)对象本身。所以可以连着点方法。
     
      

  6.   

    setTitle、setMessage这两个方法都是返回对象本身,所以可以这么写