[Android] Widjet Event Android 2011. 12. 15. 15:01

위젯을 이용하여 이벤트가 적용 된 것을 말한다.

버튼을 누른다던지 입력을 받는다던지..

간단한 코드를 먼저 보면 앞에서 했던 방식들을 그대로 포함하고 있는 것을 알 수가 있다.

public class ImageViewActivity extends Activity{
 
    /** Called when the activity is first created. */
 
 @Override   
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        findViewById(R.id.btn1).setOnClickListener(listener);
        findViewById(R.id.btn2).setOnClickListener(listener);
    }
 
 Button.OnClickListener listener = new Button.OnClickListener(){
  
  public void onClick(View view){
   TextView text = (TextView)findViewById(R.id.text);
   switch(view.getId()){
   case R.id.btn1 :
    text.setText("1");
    break;
   case R.id.btn2 :
    text.setText("2");
    break;
   }
  }
 };
}

위젯을 대상으로 했을 때는 저리 하면 되지만 키보드 입력의 경우 onCreate 내부에 setFocusable(true) 와 setFocusableTouchMode(true) 를 꼭!! 포함해야 한다. 그렇지 않으면 동작 하지 않는다!!

또한 xml 상에서 포커스를 이용하는 방법 중에는 nextFocusUp,Left,Right,Down 을 이용하여 포커스 작업을 지정 해 줄 수 있다.

쉽게 이해 하려면 Tab 키를 눌렀을 때 그 인덱스 순서를 지정하는 것과 유사하다.