Difference between OnClick() event and OnClickListener?

后端 未结 16 2340
醉话见心
醉话见心 2020-12-01 12:13

I\'m always using onclick() event in most of my projects. But, I read about OnClickListener(). Can anyone tell what\'s the difference between these

相关标签:
16条回答
  • 2020-12-01 12:51

    I am assuming by onClick that you use is the one that you defines in XML Layout. These two are alternative that serve same function but implemented differently.

    1. The onClick with function binding in XML Layout is a binding between onClick and the function that it will call. The function have to have one argument (the View) in order for onClick to function.

    2. An OnClickListener is an interface that any class could implement. Since it is an interface that any class could implement, this has more flexibility and more complex in its form. Few flexibilities that you could have with OnClickListener

      • You could easily swap one listener implementation with another if you need to.
      • An OnClickListener enable you to separate the action/behavior of the click event from the View that triggers the event. While for simple cases this is not such a big deal, for complex event handling, this could mean better readability and maintainability of the code
      • Since OnClickListener is an interface, the class that implements it has flexibilities in determining the instance variables and methods that it needs in order to handle the event. Again, this is not a big deal in simple cases, but for complex cases, we don't want to necessary mix up the variables/methods that related to event handling with the code of the View that triggers the event.
    0 讨论(0)
  • 2020-12-01 12:51

    When we want to add click listener to button in Java code, we use OnClickListener.
    When we want to add click listener to button in the layout file, we useandroid:onClick="your_method"
    If you use XML variant, you must implement your_method in your app class.

    0 讨论(0)
  • 2020-12-01 12:52
    Button button = (Button)findViewById(R.id.buttonId);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // Do stuff
        }
    });
    

    OnClickListener is an interface and onClick is method of OnClickListener.

    0 讨论(0)
  • 2020-12-01 12:52

    There are a couple reasons why you might want to programmatically set an OnClickListener. The first is if you ever want to change the behavior of your button while your app is running. You can point your button at another method entirely, or just disable the button by setting an OnClickListener that doesn't do anything.

    When you define a listener using the onClick attribute, the view looks for a method with that name only in its host activity. Programmatically setting an OnClickListener allows you to control a button's behavior from somewhere other than its host activity. This will become very relevant for Fragments, Fragments always need to use OnClickListeners to control their buttons, since they're not Activities, and won't be searched for listeners defined in onClick.

    0 讨论(0)
  • 2020-12-01 12:53

    OnClickListener is what waits for someone to actually click, onclick determines what happens when someone clicks

    the listener is a class, the onclick is a method, this distinction is not very useful in simple cases, but if you want to be more complicated it becomes more necessary

    0 讨论(0)
  • 2020-12-01 12:53

    everyone has mentioned about OnClickListener listner which one always used. i want to add one more point android:onClick works as method and it's doesn't need to be reference so it's useful when you have to add button after some task executed so you cant't referenced it for OnClickListener.

    For an example when we create viewpager with only layout (no fragments) if you put an button in any layout it insialized only when layout visible so you can't use method findViewById for Button in that case android:onClick becomed useful just put that method in activity!!

    0 讨论(0)
提交回复
热议问题