■ 안드로이드 버튼 클릭 이벤트 다양한 방법 ( Button.setOnClickListener() )
2017. 5. 23. 18:11ㆍBASIC/android
1. 익명 클래스 사용
Button button = (Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 익명 클래스 Click Event !
}
});
특정 버튼의 이벤트가 어디서 처리되어지는지 직관적으로 확인할 수 있으며,
대부분의 안드로이드 프로그래밍 도서에 가장 첫번째로 설명되는 이벤트 리스너로 가장 자주 사용되는 방법입니다.
하지만, 버튼의 개수가 많아졌을 때 버튼의 개수만큼 각각 익명 클래스 개체를 생성해야하고
더불어 해당 익명 클래스 내에서 외부의 변수를 참조하려면 final 키워드를 사용해야 하는 번거러움이 발생합니다.
- 버튼의 개수가 적고, 버튼간의 연관성이 적은 경우
- 함수 내에서 익명 클래스 외부의 변수를 참조하지 않는 경우
2. 익명 클래스의 참조 사용
Button.OnClickListener onClickListener = new Button.OnClickListener() {
@Override
public void onClick(View view) {
TextView textView1 = (TextView) findViewById(R.id.textView1);
switch (view.getId()) {
case R.id.buttonRed : textView1.setText("Red") ;
textView1.setBackgroundColor(Color.rgb(255, 0, 0));
break ;
case R.id.buttonGreen : textView1.setText("Green") ;
textView1.setBackgroundColor(Color.rgb(0, 255, 0)); break ;
case R.id.buttonBlue : textView1.setText("Blue") ;
textView1.setBackgroundColor(Color.rgb(0, 0, 255));
break ;
}
}
} ;
Button buttonRed = (Button) findViewById(R.id.buttonRed) ;
buttonRed.setOnClickListener(onClickListener) ;
Button buttonGreen = (Button) findViewById(R.id.buttonGreen) ;
buttonGreen.setOnClickListener(onClickListener) ;
Button buttonBlue = (Button) findViewById(R.id.buttonBlue) ;
buttonBlue.setOnClickListener(onClickListener) ;
익명 클래스 객체를 먼저 만들어 놓고 모든 버튼의 이벤트 리스너로 사용하는 것으로
객체를 매번 생성하지 않기 때문에 하나의 리스너 안의 핸들러 함수(onClick)에서 구분되는 차이점을 가지고 있습니다.
'BASIC > android' 카테고리의 다른 글
■ Zxing을 이용한 QRcode 스캐너 예제 [스캔, 생성] (0) | 2017.11.15 |
---|---|
■ 뒤로가기 두번 종료 (BackPressCloseHandler) (0) | 2017.05.22 |
■ 안드로이드 margin & padding (안여백, 바깥여백) (0) | 2017.05.22 |
■ 안드로이드 타이틀바 액션바 없애기 (0) | 2017.05.19 |
■ 안드로이드 로딩화면 (Splash Activity) 만들기 (0) | 2017.05.16 |