프로그래밍/Android

안드로이드 버튼 클릭 이벤트 처리 (Android Button Click Event)

Lou Park 2016. 1. 26. 14:33

안드로이드를 개발하면서 버튼을 클릭하면 나타나는 클릭이벤트를 구현하는 상황을 많이 마주한다!

그럴때마다 나는 구글에 검색해서 코드 복붙을 했는데, 이번 기회에 한번에 정리한다.

안드로이드 버튼 클릭 이벤트를 구현하는 방법은 다양하다. 

그 중에서 4가지를 소개할텐데,

아무거나, 편한대로 쓰면된다.


activity_main.xml

먼저 activity_main.xml 파일에 버튼이 하나 있다고 치자.

버튼의 id 이름은 btn_start 이고, 버튼에는 start라고 적혀있다.


1
2
3
4
5
<Button
android:id="@+id/btn_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start"/>
cs


MainActivity.java

activity_main.xml에 있는 버튼 이벤트를 적어주어야 하는 곳은

setContentView(R.layout.activity_main) 이라는 코드가 있는 MainActivity.java 이다.


1) OnClickListener 따로 만들어 구현하는 방법


첫번째 방법은 onClickListener를 따로 하나 만들고, activity_main.xml에 있는 버튼을 불러와서 버튼에 해당 리스너를 연결시키는 방법이다.

findViewById(R.id.btn_start).setOnClickListener(mClickListener);  대신에


Button btn_start = (Button) findViewById(R.id.btn_start);

btn_start.setOnClickListener(mClickListener);  라고 적어주어도 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class MainActivity extends Activity 
{    
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        findViewById(R.id.btn_start).setOnClickListener(mClickListener);
    }
 
    Button.OnClickListener mClickListener = new View.OnClickListener() {
        public void onClick(View v) {
                //이곳에 버튼 클릭시 일어날 일을 적습니다.
            }
        }
    };
}
 
 
 
cs





2) OnClickListener를 생성과 동시에 만드는 방법


두번째 방법은 만들어 놓은 OnClickListener를 연결시키는 것이 아니라, 바로 새로운 OnClickListener를 만드는 방법이다.

생성자 new를 이용하여 OnClickListener를 만들면된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class MainActivity extends Activity 
{    
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        findViewById(R.id.btn_start).setOnClickListener(
            new Button.OnClickListener() {
                public void onClick(View v) {
                    //여기에 이벤트를 적어주세요
                }
            }
        );
    }
}

3) Activity에 OnClickListener 인터페이스를 구현하는 방법


세번째 방법은 MainActivity OnClickListener implement하여 구현하는 방법이다.

MainActivity View.OnClickListener 인터페이스를 받는다.

그러면 액티비티에는 public void onClick() 메소드가 생긴다. 여기다가 일을 적고,

버튼의 OnClickListener 액티비티(this) 연결시켜주면 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class MainActivity extends Activity implements View.OnClickListener 
{    
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        Button btn_start =(Button)findViewById(R.id.btn_start);
        btn_start.setOnClickListener(this);
    }
 
    public void onClick(View v) {
        //여기에 할 일을 적어주세요.
    }
}
cs


4) XML 상에서 onClick 속성을 이용하는 방법


이 방법은 activity_main.xml의 button 부분에 onClick=""을 추가해주었다.

굳이 버튼이 아니더라도 RelativeLayout이건 어디건 다 쓸 수 있다.

나는 이것을 활용하여 길쭉한 버튼을 만들때 그냥 RelativeLayout에다 onClick 속성을 써서 버튼 이벤트를 구현한다.


1
2
3
4
5
6
<Button
android:id="@+id/btn_start"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="btnStart"
android:text="Start"/>
cs


여기서 onClick="변수이름" 에 주목!

MainActivity.java에서는 그 변수이름으로 메소드를 만든다.


1
2
3
4
5
6
7
8
9
10
11
public class MainActivity extends Activity
{    
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);    
    }
 
    public void btnStart(View v) {
        //여기에다 할 일을 적어주세요.
    }
cs