-4

我是 ANDROID 开发的新手。在进入 Android 之前,我学习了 java。我在一本书中看到了这段代码,我很困惑。这甚至是如何工作的?

我得到progressDialog类的setbutton方法正在接收参数的部分。

但是第三个参数是一个类?我虽然 new 关键字用于创建新类型(类)。在创建类时如何引用方法(.OnClickListener),最重要的是,在其中创建了另一个方法(onClick)。显然,java中有一些我不知道的东西。有人可以告诉我在java中是否有关于这个概念的教程?我不担心按钮被创建和被点击。我说的是这里使用的这个编程的概念。

太感谢了。

progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, “OK”,
    new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog,int whichButton)
        {
            Toast.makeText(getBaseContext(),“OK clicked!”, 
                Toast.LENGTH_SHORT).show();
        }
});
4

2 回答 2

1

这与 android 无关,而与 JAVA 无关,它被称为匿名内部类

于 2013-09-27T13:15:41.630 回答
1

匿名内部类可以在创建具有某些“额外”(例如重载方法)的对象实例时很有用,而不必实际子类化一个类。

progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, “OK”,
new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog,int whichButton)
    {
        Toast.makeText(getBaseContext(),“OK clicked!”, 
            Toast.LENGTH_SHORT).show();
    }
});

除了上面的代码,你也可以声明如下,但代码有点长。

progressDialog.setButton(DialogInterface.BUTTON_POSITIVE, "ok", new DialogDemo());

通过如下编写内部类

private class DialogDemo implements DialogInterface.OnClickListener{

    @Override
    public void onClick(DialogInterface dialog, int which) {
        Toast.makeText(getBaseContext(),“OK clicked!”, 
                Toast.LENGTH_SHORT).show();
}
}
于 2013-09-27T13:54:04.520 回答