onclick 이벤트 적용하는 방법 정리해둔다.

 


1. xml에 직접적으로 연결시키기

보면 알겠지만 deprecated 됐다.

쓸 수는 있지만 지원을 안하니까 api버전이 다르면 작동 안할 수도 있으니 더 이상 쓰지말자.

 

2.OnClickListener 인터페이스 상속받아 사용

 

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState)

{

BtnOnClick btnOnClick= = new BtnOnClick();

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

btn1.setOnClickListener(btnOnClick);

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

btn2.setOnClickListener(btnOnClick);

} // 클래스를 따로 생성하여 이벤트 리스너 상속 class BtnOnClick implements View.OnClickListener { @Override public void onClick(View v)

{ switch (v.getId())

{ case R.id.btn1:

// btn1 동작

break;

case R.id.btn2:

// btn2 동작

break; }

}

}

}

3.익명 클래스 객체

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

btn1.setOnClickListener(click);

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

btn2.setOnClickListener(click);

View.OnClickListener click = new View.OnClickListener() {

@Override

public void onClick(View v)

{

switch (v.getId())

{ case R.id.btn1:

// btn1 동작 break;

case R.id.btn2:

// btn2 동작

break; } } };

4. Listener Class를 익명Class로 정의

activity 전환 예제

click 이벤트가 어디서 처리되는지 쉽게 확인할 수 있고, 코드가 간결하기 때문에 자주 사용된다.

  • 이벤트가 일어나는 view(Button 등)의 개수가 적거나, 이벤트가 일어나는 view 간의 연관성이 적은 경우
  • 이벤트 핸들러 함수 내에서 익명 클래스 외부의 변수를 참조하지 않는 경우
  • 간단한 view 클릭 이벤트 테스트 코드를 작성하는 경우

https://boheeee.tistory.com/23

출처

 

[Android] 안드로이드 여러 가지 방법으로 OnClickListener 사용하기

안녕하세요. 오늘은 안드로이드 OnClickListener를 사용하는 여러 가지 방법에 대해 알아보겠습니다. ( OnClickListener를 처음 접하시는 분은 적합하지 않은 글입니다. ) 안드로이드에서는 여러 방법으

boheeee.tistory.com

 

+ Recent posts