2013-05-12 1 views
1

보기에 'OnTouchListener'수신기를 추가 할 때 등록되지 않습니다.보기의 OnTouchListener - Android

GUI gui; 
boolean guis = true; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    gui = new GUI(getBaseContext()); 
    gui.setOnTouchListener(this); 
    setContentView(gui); 
} 

내가 setOnTouchListener(), 나는 매개 변수로 '이'배치해야합니까 .. 그 뭔가 다른이어야한다 : 여기 내 코드는?

는 내가 GUI 클래스는 OnTouchListener를 구현하도록하고 OnTouch 방법 ... 을 추가하지만 난 OnTouch 방법에서
Log.w("AA","Hello") 

을 넣어, 아직은 모든 ​​것을 기록하지 않습니다.

+0

'this'를 사용하면 Activity가 'OnTouchListener'를 구현 한 것으로 가정하고 터치 이벤트가 전달됩니다. – Luksprog

+0

View에 OnTouchListener가 있기를 원합니다. – KeirDavis

답변

4

는 다음과 같은

public class MainActivity extends Activity implements OnTouchListener{ 
    GUI gui; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     gui = new GUI(MainActivity.this); 
      setContentView(gui); 
    gui.setOnTouchListener(this); 
} 


@Override 
public boolean onTouch(View v, MotionEvent event) { 
    // TODO Auto-generated method stub 
    Log.w("AA","Hello") 
    return true; 
} 

할 수 또는 Luksprog이 현재 컨텍스트에의 참조 주석으로 당신은 당신의 GUI보기

public class GUI extends View{ 

Context mcontext; 
public MyView(Context context) { 
    super(context); 
      mcontext=context; 
} 
@Override 
public boolean onTouchEvent(MotionEvent event) { 
Toast.makeText(mcontext, "View clicked", 1000).show(); 
switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
     // do something 
     break; 
    case MotionEvent.ACTION_MOVE: 
     // do something 
     break; 
    case MotionEvent.ACTION_UP: 
     //do something 
     break; 
} 
return true; 
} 

에 onTouch을 대체 할 수 있습니다.

이렇게하면 gui.setOnTouchListener (this);

귀하의 활동 클래스는 OnTouchListener를 구현하고 onTouch 메소드를 대체해야합니다.

사용자 정의보기에서 onTouch를 재정의 할 수도 있습니다.

onTouch를 재정의하면 GUI 사용자 정의보기 클래스에서 OnTouchListener를 구현할 필요가 없습니다.

+0

당신은 멋지 네요. = D – KeirDavis