View.OnClickListener() a function or Interface

后端 未结 2 671
长发绾君心
长发绾君心 2020-12-30 13:00

Is View.OnClickListener() a function or interface? When we try to set a onclicklistener() method in android, we use new View.OnClickListener() and it bugs me there cuz as fa

相关标签:
2条回答
  • 2020-12-30 13:47

    I'm not sure I understand what you are writing about static methods. View.OnClickListener is an interface: http://developer.android.com/reference/android/view/View.OnClickListener.html

    To set a click listener on a view, you pass an instance implementing the OnClickListerner interface: http://developer.android.com/reference/android/view/View.html#setOnClickListener(android.view.View.OnClickListener)

    The most common way to do this in android is to define an anonymous inner class (http://docs.oracle.com/javase/tutorial/java/javaOO/innerclasses.html) that implements OnClickListener like

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

    The code above both defines an anonymous inner class and creates an instance of it. It is equivalent to first defining a class implementing View.OnClickListener (if defined in the same class)

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

    And later using this

    MyOnClickListener listener = new MyOnClickListener();
    myView.setOnClickListener(listener);
    
    0 讨论(0)
  • 2020-12-30 13:47

    Sample Code,

    Internally it works something like this,

    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) {
    
                }
            });
        }
    }
    
    0 讨论(0)
提交回复
热议问题