How to Apply One Listener to Multiple Buttons in Android?

06 Jun, 2021
In this article we are going to write a shortcode for applying click events over different buttons, rather than writing different methods for different buttons, we are going to build only a single method that is onClick() for all buttons present and by using the concept of switch case we can perform different activities over different buttons. Now, without wasting further time let’s look at the implementation.
In this article, we will develop a sample application that will contain three buttons and by clicking those three buttons we can perform different actions by using only a single onClick() method. A sample video is given below to get an idea about what we are going to do in this article. Note that we are going to implement this project using the Java language.
Step 1: Create a New Project
To create a new project in Android Studio please refer to How to Create/Start a New Project in Android Studio. Note that select Java as the programming language.
Step 2: Working with the activity_main.xml file
Now it’s time to design the layout of the application. So for that go to the app >res > layout > activity_main.xml and paste the below-written code in the activity_main.xml file.
XML
<?xml version="1.0" encoding="utf-8"?><RelativeLayout     xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:app="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:id="@+id/root_layout"    tools:context=".MainActivity">            <!--add three buttons in layout-->    <Button        android:id="@+id/button"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_centerHorizontal="true"        android:layout_marginTop="220px"        android:text="Button 1" />      <Button        android:id="@+id/button2"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/button"        android:layout_centerHorizontal="true"        android:text="Button 2" />      <Button        android:id="@+id/button3"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/button2"        android:layout_centerHorizontal="true"        android:text="Button 3" />    </RelativeLayout>
Step 3: Working with the MainActivity.java file
Go to the app > java > package name > MainActivity.java file and refer to the following code. Below is the code for the MainActivity.java file. Comments are added inside the code to understand the code in more detail.
Java
import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;  public class MainActivity extends AppCompatActivity implements View.OnClickListener {      // creating three buttons       // by the of btn1, btn2,btn3    Button btn1, btn2 ,btn3;      @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);          // connecting buttons with the           // layout using findViewById()        btn1= findViewById(R.id.button);        btn2= findViewById(R.id.button2);        btn3= findViewById(R.id.button3);          // apply setOnClickListener over buttons        btn1.setOnClickListener(this);        btn2.setOnClickListener(this);        btn3.setOnClickListener(this);        }      // common onClick() for all buttons    @Override    public void onClick(View v) {          switch (v.getId()){              // cases applied over different buttons            case R.id.button:                  // Toast message appears when button pressed                Toast.makeText(this, "button1 pressed", Toast.LENGTH_SHORT).show();                break;                          case R.id.button2:                  Toast.makeText(this, "button2 pressed", Toast.LENGTH_SHORT).show();                break;                          case R.id.button3:                  Toast.makeText(this, "button3 pressed", Toast.LENGTH_SHORT).show();                break;        }    }}
That’s all, now the application is ready to install on the device. Here is what the output of the application looks like.
Output:
Android
Java
Java
Android
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.