当我添加一个监听器' OnTouchListener'对于View,它没有注册。这是我的代码:
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方法...... 但是我把
Log.w("AA","Hello")
在OnTouch方法中,它根本没有记录。
答案 0 :(得分: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;
}
或者您可以在gui视图中覆盖onTouch
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;
}
正如Luksprog评论的那样,请参考当前的背景。
如果你这样做gui.setOnTouchListener(this);
您的活动类必须实现OnTouchListener并覆盖onTouch方法。
您还可以在自定义视图中覆盖onTouch。
如果只是覆盖onTouch,则无需在GUI自定义视图类中实现OnTouchListener。