안규 공부방

Android > Button - 클릭 이벤트 사용방법

등록일 : 2017-07-06 17:13 조회수 : 93,595


 맨날 까먹어 책 찾아 보고.. 인터넷 뒤져보고.. 해서 이 기회에 버튼에 대한 클릭 이벤트 핸들러 코드를 작성하는 것에 대해 정리를 해 놔야겠습니다.

머리가 나쁘니.. 손이 좀 고생을 해야겠지요..

레이아웃에 두개의 버튼이 있다고 가정하겠습니다. id는 각각 viewMode, editMode라고 하면. 클릭 이벤트의 코드를 작성하는 방법에는 2가지가 있습니다.

물론 따져보면 둘다 동일한 방식이기는 하지만 코드 모양새가 다르므로 다르다고 치겠습니다.

첫번째 방식입니다. 다수의 버튼들에 대한 이벤트 코드를 한자리에 가족같은 분위기로 다스리는 방식이라고 할 수 있겠습니다..
 
	@Override
	public void onCreate(Bundle savedInstanceState) {
		....
		findViewById(R.id.viewMode).setOnClickListener(btnClickListener);
		findViewById(R.id.editMode).setOnClickListener(btnClickListener);
		....
	}
 
	private Button.OnClickListener btnClickListener = new View.OnClickListener() {
		@Override
		public void onClick(View v) {
			switch(v.getId()) {
			case R.id.viewMode:
				map.setMouseMode(MouseMode.MapViewMode);
				break;
			case R.id.editMode:
				map.setMouseMode(MouseMode.EditMode);
				break;
			}
		}
	};
	


두번째 방식입니다. 이 방식은 각 버튼마다 이벤트 처리 코드를 따라 분리해 두는 방식입니다.
 
	@Override
	public void onCreate(Bundle savedInstanceState) {

		....

		findViewById(R.id.viewMode).setOnClickListener(
			new Button.OnClickListener() {
				@Override
				public void onClick(View v) {
					map.setMouseMode(MouseMode.MapViewMode);
				}
			}
		);
         
		findViewById(R.id.editMode).setOnClickListener(
			new Button.OnClickListener() {
				@Override
				public void onClick(View v) {
					map.setMouseMode(MouseMode.EditMode);
				}
			}
		);
         
	    ....

	}
	


세번째 방법은 implements 방식입니다.
 
	public class Member_Login extends Activity implements OnClickListener {
		@Override
		public void onCreate(Bundle savedInstanceState) 
		{
			super.onCreate(savedInstanceState);
			requestWindowFeature(Window.FEATURE_NO_TITLE);				//타이틀바 없애기
			setContentView(R.layout.member_login);
        
			findViewById(R.id.btn_mem_join).setOnClickListener(this);  			//회원가입버튼
			findViewById(R.id.btn_mem_login).setOnClickListener(this);		  	//로그인버튼
		}
    
		public void onClick(View v) {
			switch(v.getId())
			{
				case R.id.btn_mem_join:
					//회원가입페이지로 이동      
					break;   
				case R.id.btn_mem_login:
					//로그인 버튼 클릭시
					break; 
			}	    			        		
		}
	}
	
※ 혹시 도움이 되셨다면 댓글에 한마디 남겨주세요!
작성자   비밀번호
자동글 방지     (자동글 방지 기능입니다.)
내용   댓글달기 
이메일 문의 : cak0280@nate.com  
Copyright 2000 By ENTERSOFT.KR All Rights Reserved.