개요
이 튜토리얼에서는 안드로이드 앱에서 라디오 버튼(RadioButton)에 OnClickListener를 설정하는 방법을 단계별로 알아봅니다. 라디오 버튼은 여러 선택지 중 하나만 고를 수 있는 UI 요소로, 사용자가 버튼을 클릭했을 때 특정 동작을 실행하려면 클릭 이벤트 처리가 필요합니다. XML 레이아웃에서 android:onClick 속성을 활용하면 별도의 리스너 객체 없이 간단하게 클릭 이벤트를 처리할 수 있습니다.
1단계: 새 프로젝트 생성
Android Studio를 실행하고 File → New Project 메뉴로 이동한 뒤, 새 프로젝트 생성에 필요한 모든 정보를 입력하여 프로젝트를 만듭니다.
2단계: 레이아웃 파일 작성
res/layout/activity_main.xml 파일에 아래 코드를 추가합니다. 핵심은 각 라디오 버튼에 android:onClick 속성으로 클릭 시 호출될 메서드 이름을 지정하는 것입니다.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:tools="https://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@id/radioGroup" android:layout_marginBottom="20sp" android:layout_centerInParent="true" android:textSize="16sp" android:textStyle="bold|italic" android:text="Select your favourite to drive..."/> <RadioGroup android:id="@+id/radioGroup" android:layout_centerInParent="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="BMW" android:onClick="onClickedBMW"/> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="NISSAN GTR" android:onClick="onClickedNissan"/> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Lamborghini" android:onClick="onClickedLamborghini"/> </RadioGroup> </RelativeLayout>
3단계: MainActivity 작성
src/MainActivity.java에 다음 코드를 추가합니다. XML에서 android:onClick 속성으로 지정한 이름과 동일한 public 메서드를 작성하면, 해당 뷰가 클릭될 때 자동으로 호출됩니다. 여기서는 각 차량이 선택되었을 때 Toast 메시지를 표시하도록 구현했습니다.
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClickedBMW(View view) {
Toast.makeText(this, "BMW is selected for a drive!", Toast.LENGTH_SHORT).show();
}
public void onClickedNissan(View view) {
Toast.makeText(this, "Nissan GTR is selected for a drive!", Toast.LENGTH_SHORT).show();
}
public void onClickedLamborghini(View view) {
Toast.makeText(this, "Lamborghini is selected for a drive!", Toast.LENGTH_SHORT).show();
}
}4단계: AndroidManifest.xml 설정
androidManifest.xml에 아래 코드를 추가합니다. 일반적으로 새 프로젝트를 생성하면 이 설정은 기본적으로 포함되어 있으므로, MainActivity가 정상적으로 등록되어 있는지만 확인하면 됩니다.
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
앱 실행 및 결과 확인
이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 기기가 컴퓨터에 연결되어 있다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤 툴바의 Run 아이콘을 클릭하고, 실행 옵션에서 본인의 모바일 기기를 선택하세요. 그러면 모바일 기기에 아래와 같은 기본 화면이 표시됩니다.


라디오 버튼을 하나씩 눌러보면, 선택된 차량에 따라 각각 다른 Toast 메시지가 화면 하단에 잠깐 나타나는 것을 확인할 수 있습니다. 이처럼 android:onClick 속성을 사용하면 XML과 Java 코드를 깔끔하게 분리하면서도 라디오 버튼의 클릭 이벤트를 손쉽게 처리할 수 있습니다.