package soo.event; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; //public class EventTest1 extends Activity implements View.OnClickListener{ public class EventTest1 extends Activity{ /** Called when the activity is first created. */ public Button bt; public EditText et; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.event); bt = (Button)findViewById(R.id.button01); et = (EditText)findViewById(R.id.editText01); //1. 익명(무명) 내부 클새스 /* bt.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(EventTest1.this, "익명(무명) 내부 클래스\n\n이벤트 처리", Toast.LENGTH_LONG).show(); et.setTextColor(Color.RED); et.setText("익명(무명) 내부클래스로 \n\n이벤트 처리"); } }); */ //2_1. 유명 내부클래스로 처리 (메소드 안에 클래스 선언) /* class InnerHandler implements View.OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(EventTest1.this, "유명 내부클래스로 처리 (메소드 안에 클래스 선언)이벤트 처리", Toast.LENGTH_LONG).show(); et.setTextColor(Color.BLUE); et.setText("유명 내부클래스로 처리 (메소드 안에 클래스 선언) 이벤트 처리"); } } bt.setOnClickListener(new InnerHandler()); */ //bt.setOnClickListener(new InnerHandler()); //bt.setOnClickListener(this); //bt.setOnClickListener(new ThirdHandler(this)); //생성자 방식으로 하는 방법 bt.setOnClickListener(new ThirdHandler()); //View의 context를 이용해서 하는 경우 } //2_2. 유명 내부클래스로 처리 (클래스안에 클래스 선언) /* class InnerHandler implements View.OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(EventTest1.this, "유명 내부클래스로 처리 (클래스안에 클래스 선언)이벤트 처리", Toast.LENGTH_LONG).show(); // 유명 내부클래스일 경우에는 지역 변수를 멤버변수로 빼어야 하는 경우가 발생 한다. et.setTextColor(Color.YELLOW); et.setText("유명 내부클래스로 처리 (클래스안에 클래스 선언) 이벤트 처리"); } } */ //3. 자기자신의 클래스로 처리한다. /* @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(EventTest1.this, "자기자신의 클래스로 처리 이벤트 처리", Toast.LENGTH_LONG).show(); // 유명 내부클래스일 경우에는 지역 변수를 멤버변수로 빼어야 하는 경우가 발생 한다. et.setTextColor(Color.BLUE); et.setText("자기자신의 클래스로 처리 이벤트 처리"); } */ public EditText getEt(){ return et; } } //4. 제 3클래스로 처리 class ThirdHandler implements View.OnClickListener{ /* EventTest1 etest; public ThirdHandler(EventTest1 etest) { this.etest=etest; // TODO Auto-generated constructor stub } @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(etest, "제 3클래스로 처리 이벤트 처리", Toast.LENGTH_LONG).show(); // 유명 내부클래스일 경우에는 지역 변수를 멤버변수로 빼어야 하는 경우가 발생 한다. etest.getEt().setTextColor(Color.RED); etest.getEt().setText("제 3클래스로 처리 이벤트 처리"); } */ @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(v.getContext(), "제 3클래스로 처리 이벤트 처리", Toast.LENGTH_LONG).show(); // 유명 내부클래스일 경우에는 지역 변수를 멤버변수로 빼어야 하는 경우가 발생 한다. ((EventTest1)v.getContext()).getEt().setTextColor(Color.RED); ((EventTest1)v.getContext()).getEt().setText("제 3클래스로 처리 이벤트 처리"); } }