레필리아
[Android] 버튼 이벤트 처리
레필리아
레필리아의 잡동사니
레필리아
전체
오늘
어제
  • 전체보기 (151)
    • 개발 공간 (1)
      • 매크로 (1)
    • 컴퓨터공학 리서치 (23)
      • 공개 (23)
      • 비공개 (0)
    • 컴퓨터공학 기초 (70)
      • Computer architectur.. (0)
      • Embedded system (6)
      • Operating system (0)
      • Database (2)
      • C.C++ (32)
      • Network (0)
      • Java (12)
      • 문제 풀이 (18)
    • 창고 (57)
      • 미분류 (57)
      • 유틸리티 (0)
      • 쓰레기통 (0)
      • ESLAB (0)

블로그 메뉴

  • 홈
  • 태그
  • 미디어로그
  • 위치로그
  • 방명록

공지사항

인기 글

태그

  • MSP430F5437

최근 댓글

최근 글

hELLO · Designed By 정상우.
컴퓨터공학 기초/Java

[Android] 버튼 이벤트 처리

2012. 2. 14. 17:08

버튼은 단순한 차일드 위젯이고 버튼클래스를 바로 사용하는것이 보통이라 상속받지않고 이벤트 처리가능해야함

그래서 클릭 이벤트에 대해선 콜백 메서드가 정의되어 있지 않으며 반드시 리스너로 이벤트를 받어야한다.

첫번째방법


<?xml version="1.0" encoding="utf-8"?>
< LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
>

<TextView
android:id="@+id/fruit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ffff00"
android:textSize="20pt"
android:text="과일"
/>

<LinearLayout
android:layout_width="wrap_content"
android:layout_height="fill_parent"
>

<Button
android:id="@+id/apple"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Apple"
/>

<Button
android:id="@+id/orange"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Orange"
/>
< /LinearLayout>
< /LinearLayout>


package test.Layout;

import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.*;

public class Layout extends Activity 
{	
    public void onCreate(Bundle savedInstanceState) 
    {
    	super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		findViewById(R.id.apple).setOnClickListener(mClickListener);
		findViewById(R.id.orange).setOnClickListener(mClickListener);
    }

	Button.OnClickListener mClickListener = new View.OnClickListener() {
		public void onClick(View v) {
			TextView textFruit=(TextView)findViewById(R.id.fruit);
			switch (v.getId()) {
			case R.id.apple:
				textFruit.setText("Apple");
				break;
			case R.id.orange:
				textFruit.setText("Orange");
				break;
			}
		}
	};
}


방법 2 - 리스너 1개로 여러뷰에대해 등록

package test.Layout;

import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.*;

public class Layout extends Activity implements View.OnClickListener 
{	
    public void onCreate(Bundle savedInstanceState) 
    {
    	super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		Button btnApple=(Button)findViewById(R.id.apple);
		btnApple.setOnClickListener(this);
		Button btnOrange=(Button)findViewById(R.id.orange);
		btnOrange.setOnClickListener(this);
    }

	public void onClick(View v) {
		TextView textFruit=(TextView)findViewById(R.id.fruit);
		switch (v.getId()) {
		case R.id.apple:
			textFruit.setText("Apple");
			break;
		case R.id.orange:
			textFruit.setText("Orange");
			break;
		}
	}
}

- OnClickListener 인터페이스르 ㄹ직접구현했으므로 리스너는 액티비티 자신인 this다.

- 리스너를 칭할수있는 방법이 생겨서 리스너 등록 메소드로 this를 전달함

- onClick메서드는 누구를 클릭했는지 View의 v를 전달받으며 v의 getId를 통해 클릭된 버튼을 알아낸다.


방법 3 - 최상위 액티비티는 두고, 별도 리스너 객체를 멤버 선언후 이걸 리스너로 사용 하는 방법

package test.Layout;

import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.*;

public class Layout extends Activity
{	
    public void onCreate(Bundle savedInstanceState) 
    {
    	super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		Button btnApple=(Button)findViewById(R.id.apple);
		btnApple.setOnClickListener(new Button.OnClickListener() {
			public void onClick(View v) {
				TextView textFruit=(TextView)findViewById(R.id.fruit);
				textFruit.setText("Apple");
			}
		});

		Button btnOrange=(Button)findViewById(R.id.orange);
		btnOrange.setOnClickListener(new Button.OnClickListener() {
			public void onClick(View v) {
				TextView textFruit=(TextView)findViewById(R.id.fruit);
				textFruit.setText("Orange");
			}
		});
    }
}

'컴퓨터공학 기초 > Java' 카테고리의 다른 글

단위테스트 JUNIT (1)  (1) 2012.03.07
Easier click Listener, OnClick의 간단한 코드작성 방법  (0) 2012.02.14
[Android] SharedPreferences Class  (0) 2012.02.14
JDK 1.6 api (kor)  (0) 2011.05.02
android-sdk_r06_docs  (0) 2011.05.02
'컴퓨터공학 기초/Java' 카테고리의 다른 글
  • 단위테스트 JUNIT (1)
  • Easier click Listener, OnClick의 간단한 코드작성 방법
  • [Android] SharedPreferences Class
  • JDK 1.6 api (kor)
레필리아
레필리아
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.