2013-09-27 39 views
-4

我是ANDROID DEVELOPMENT的新手。在学习Android之前,我学会了java。我在一本书中看到这段代码,我很难过。 这甚至如何工作?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(); 
     } 
}); 
+7

这就是所谓的[匿名类(http://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses。 HTML)。 – jonhopkins

+0

'OnClickListener'不是一种方法!它是DialogInterface类中的类 – Piro

回答

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(); 
} 
} 
1

这是不相关到Android一样,因为它关系到JAVA反正它被称为anonymous inner class

+0

是的,我知道。这就是为什么我提到我在Android中找到了代码,我需要一些指导来了解这个概念。感谢所有的课程。我意识到它将是一个类似于将函数作为参数传递给另一个函数的情况。 – user1666952

相关问题