当前位置: 代码迷 >> Android >> AlertDialog Builder实例化有关问题
  详细解决方案

AlertDialog Builder实例化有关问题

热度:158   发布时间:2016-04-28 06:19:43.0
AlertDialog Builder实例化问题
代码1
AlertDialog.Builder buider = new AlertDialog.Builder(this);
buider .setPositiveButton("qqq", null).show();

代码2
AlertDialog.Builder buider = new AlertDialog.Builder(this) .setPositiveButton("qqq", null).show();

代码3
AlertDialog buider = new AlertDialog.Builder(this).setPositiveButton("qqq", null).show();


老鸟一看就知道代码1代码3正确,代码2错误。‘
新手表示不懂其中缘由,求解。。。
------解决方案--------------------
代码2用的AlertDialog.Builder buider,代码3用的AlertDialog buider
------解决方案--------------------
AlertDialog.Builder buider = new AlertDialog.Builder(this) .setPositiveButton("qqq", null).show();

  public AlertDialog show() {
            AlertDialog dialog = create();
            dialog.show();
            return dialog;
        }

可以看出 show方法返回的是AlertDialog,与你的定义AlertDialog.Builder buide不匹配
------解决方案--------------------
AlertDialog.Builder 是一个类
AlertDialog 是另一个类
实现方法肯定不一样啊
------解决方案--------------------
2楼是正解。 (1)show()方法是放在了Builder 类下,(3)返回的是一个AlertDialog的对象。这里的(1)和(3)对应着你上边的代码段的编号。而(2)是把show()返回的AlertDialog对象,赋值给Builder 对象,这如果不加强转的话肯定是错误的。放个java文件你自己理解下;
public class One {

private void show() {
System.out.println("show1");

}
public static class Builder{
public One show() {
One a = new One();
a.show();
return a;
}
}

}



public class Main {

/**
 * @param args
 */
public static void main(String[] args) {

//1
One.Builder a1 = new One.Builder();
a1.show();

//2
//One.Builder a2 = new One.Builder().show();

//3
//One a3 = new One.Builder().show();

}


}
  相关解决方案