*callback code


package exam.handleEvent;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.*;
import android.widget.*;



public class HandleEventActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View vw = new MyView(this);
        
        setContentView(R.layout.main);
        //setContentView(vw);
        
    }
    
    protected class MyView extends View{
    public MyView(Context context){
    super(context);
    }
    }
    public boolean onTouchEvent(MotionEvent mevent){
    super.onTouchEvent(mevent);
    if (mevent.getAction() == MotionEvent.ACTION_DOWN){
    Toast.makeText(HandleEventActivity.this,"Touch event received", Toast.LENGTH_SHORT).show();
    return true;
    }
    return false;
    }
  
}





*listener code



package exam.fruit1;

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

public class Fruit1Activity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
  
        View vm = new View(this);
        vm.setOnTouchListener(TouchListener);
       // setContentView(vm);  
        setContentView(R.layout.main);
    }
    class TouchListenerClass implements View.OnTouchListener{
    public boolean onTouch(View v, MotionEvent event){
    if (event.getAction() == MotionEvent.ACTION_DOWN){
    Toast.makeText(Fruit1Activity.this,"Touch Event Received", Toast.LENGTH_SHORT).show();
    return true;
    }
    return false;
    }
    }
    TouchListenerClass TouchListener = new TouchListenerClass();
}



기능은 두 코드가 같다. 터치 이벤트가 발생하면 toast창을 띄우는 코드이다.

 결과에서의 차이는 발견되지 않는다. 

하지만 이상한 점은, setContentView를 View속성의 인스턴스를 매개변수로 하면 두 코드 모두 동일하게 되지만,

레이아웃 XML파일의 주소(R.layout.main)를 매개변수로 하면, listener쪽의 코드는 이상동작 한다.(toast가 뜨지 않는다.)

이유는 아직 모른다. 더 검토해볼 가치가 있어보인다. 


신고

'android' 카테고리의 다른 글

callback과 listener의 차이  (2) 2011.12.28


티스토리 툴바