2012-08-05 20 views
6

View.OnClickListener() işlevi bir işlev mi yoksa arabirim mi? Biz android bir OnClickListener() yöntemini ayarlamak çalıştığınızda, yeni View.OnClickListener() ve böcekleri orada bana en bildiğim kadarıyla kuzen biz sınıfının bir nesneyi başlatmak gerekmezView.OnClickListener() işlev veya Arabirim

  • kullanmak Bu yöntemleri kullanmak için statik yöntem içeren. Bunu neden yapıyoruz?
  • Arabirimi uygulamak için uygulamamızı kullandığımızda, arabirimin statik yöntemlerini çağırmayız. onclick() yöntemi kullanılarak,)

    • yeni View.OnClickListener (:

    Yani bazı biri neden biz yapacağız bana söyleyebilir?

  • Neden bir arabirim ise View.OnClickListener ile() kullanıyoruz? Cevabınız için

Teşekkür ..

cevap

14

Sana statik yöntemleri hakkında yazıyoruz anlamak emin değilim. View.OnClickListener bir arayüz: http://developer.android.com/reference/android/view/View.html#setOnClickListener(android.view.View.OnClickListener)

android bunu yapmanın en yaygın yolu, bir tanımlamaktır: http://developer.android.com/reference/android/view/View.OnClickListener.html

bir görünümde bir tıklama işleyicisi ayarlamak için, bir örneği OnClickListerner arabirimini uygulayan geçmesi yukarıdaki her iki

myView.setOnClickListener(new View.OnClickListener() { 
    @Override   
    public void onClick(View v) { 
     // Handle view click here   
    } 
}); 

kodu gibi OnClickListener uygulayan anonim iç çapında (http://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html) anonim bir iç sınıf tanımlar ve bir örneğini oluşturur. Bu, ilk (aynı sınıfta tanımlanmış ise) View.OnClickListener uygulayan bir sınıf

class MyOnClickListener implements View.OnClickListener { 
    @Override   
    public void onClick(View v) { 
     // Handle view click here   
    } 
} 

tanımlayan Ve daha sonra bu

MyOnClickListener listener = new MyOnClickListener(); 
myView.setOnClickListener(listener); 
+0

Anlamadığım bir şey, arabirimi kullanmak için IMPLEMENTS kullanılırken neden() kullandığımızdır. –

+3

(), OnonymousListener'ı uygulayan nesnenin oluşturulduğu, anonim iç sınıfın yapıcısına yapılan çağrıdır. Google'a "anonim iç sınıf" için veya http://stackoverflow.com/questions/355167/how-are-anonymous-inner-classes-used-in-java adresinden veya http://viralpatel.net/blogs adresinden ulaşabilirsiniz./iç sınıflar-in-java/ – toucan

+0

Önemli kavramlar için teşekkürler. –

0

enter image description here

örnek kod kullanarak eşdeğerdir

Dahili olarak böyle bir şey çalışır,

public class MyView{ 

public stinterface MyInterface{ 
     public void myOnClick(View view); 
    } 

} 

public class MyButton{ 
     View view; 

     public void setOnClicker(MyInterface onClicker) { 
      onClicker.myOnClick(view); 
     } 
    } 


public class MyExample{ 

    public void method(){ 
     MyButton myButton = new MyButton(); 
     myButton.setOnClicker(new MyInterface() { 
      @Override 
      public void myOnClick(View view) { 

      } 
     }); 
    } 
}