상세 컨텐츠

본문 제목

[안드로이드] OnClickListener onClick 하나로 다중 버튼 이벤트 설정하기

안드로이드

by aries574 2021. 1. 18. 11:13

본문


2021/01/14 - [안드로이드] - [안드로이드] 차트(Chart) - 데이터를 그래픽으로 표현 Bar, Pie, Radar

2021/01/15 - [안드로이드] - [안드로이드] TextToSpeech 텍스트(Text)를 음성으로 전환시켜주는 방법

2021/01/16 - [안드로이드] - [안드로이드]RecognizerIntent 음성을 텍스트(Text)로 전환시켜주는 방법

2021/01/17 - [안드로이드] - [안드로이드] 액티비티(Activity) 활동주기(Life Cycle)

 

버튼에 onClick 이벤트를 사용하려면  onClickListener를 통해 하나의 버튼에 하나의 onClick를 사용했습니다.

예)

btn1.setOnClickListener(new View.OnClickListener() {
 @Override
 public void onClick(View v) {
 
 }
});

 

만약에 버튼이 하나 이상이라면 코드 길이도 길어지며 복잡해질 수가 있습니다. 

이 때 중복된 부분을 줄이고 하나의 onClick 메소드에서 사용하는 방법을 알아 보겠습니다.

 

1. 메인화면 구현(activity_main.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:orientation="vertical"
 tools:context=".MainActivity">

 <Button
 android:id="@+id/btn1"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="버튼1"
 android:layout_marginTop="50dp"
 android:layout_centerHorizontal="true"/>

 <Button
 android:id="@+id/btn2"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="버튼2"
 android:layout_below="@+id/btn1"
 android:layout_centerHorizontal="true"/>

 <Button
 android:id="@+id/btn3"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="버튼3"
 android:layout_below="@+id/btn2"
 android:layout_centerHorizontal="true"/>

</RelativeLayout>

 

2. 메인코드 구현(MainActivity.java)

View.OnClickListener을 상속받아 onClick를 재정의 해주면 switch문을 통해 각 버튼 별로 이벤트를 적용할 수 있습니다. 

반복은 없애고, 코드는 깔끔해질 수 있습니다.


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{

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 Button btn1 = findViewById(R.id.btn1);
 Button btn2 = findViewById(R.id.btn2);
 Button btn3 = findViewById(R.id.btn3);

 btn1.setOnClickListener(this);
 btn2.setOnClickListener(this);
 btn3.setOnClickListener(this);
 }


 @Override
 public void onClick(View v) {
 switch(v.getId()){
 case R.id.btn1:
 Toast.makeText(this, "버튼1 클릭했습니다.", Toast.LENGTH_SHORT).show();
 break;
 case R.id.btn2:
 Toast.makeText(this, "버튼2 클릭했습니다.", Toast.LENGTH_SHORT).show();
 break;
 case R.id.btn3:
 Toast.makeText(this, "버튼3 클릭했습니다.", Toast.LENGTH_SHORT).show();
 break;
 }
 }
}

 

3. 실행화면

 

 

 

 

2021/01/14 - [안드로이드] - [안드로이드] 차트(Chart) - 데이터를 그래픽으로 표현 Bar, Pie, Radar

2021/01/15 - [안드로이드] - [안드로이드] TextToSpeech 텍스트(Text)를 음성으로 전환시켜주는 방법

2021/01/16 - [안드로이드] - [안드로이드]RecognizerIntent 음성을 텍스트(Text)로 전환시켜주는 방법

2021/01/17 - [안드로이드] - [안드로이드] 액티비티(Activity) 활동주기(Life Cycle)

 

반응형

관련글 더보기

댓글 영역