[英]Android onTouchListener does not work from nested switch statement
[英]Android OnTouchListener Does Not Work
这很简单。 OnTouchListener完全不起作用。
我相当确定它正在初始化。 我使用自定义视图绘制UI,并且像往常一样,我受到Android的敏感API(双关语)的阻碍:
public class ViewInterface extends View implements OnTouchListener{
public ViewInterface(Context context){
super(context);
...
}
public void update(){
...
}
@Override
public void onDraw(Canvas canvas){
...
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
keyboardEnabled = true;
return true;
case MotionEvent.ACTION_UP:
keyboardEnabled = false;
return true;
default: break;
}
return false;
}
用于在主要活动中初始化视图的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
//setContentView(R.layout.activity_aidan);
activity = this;
viewInterface = new ViewInterface(this);
setContentView(viewInterface);
initializeSpeechRecognition();
findMe();
run.start();
}
我想念什么? 触摸并按住屏幕后,应该将keyboardEnabled设置为true(它只是一个调试值),但它不会执行任何操作。 触摸事件似乎根本没有响应。
我试图通过以下代码使用View内置的onTouchEvent方法:
@Override
public boolean onTouchEvent(MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
keyboardEnabled = true;
return true;
case MotionEvent.ACTION_UP:
keyboardEnabled = false;
return true;
default: break;
}
return false;
}
但是,这也不起作用。 触摸事件完全没有响应-轻按屏幕并释放,应将keyboardEnabled设置为false-不会。
您应该重写View
类的onTouchEvent()
方法。
现在,您只是在实现应与setOnTouchListener()
方法结合使用的OnTouchListener
接口。
例如:
@Override
public boolean onTouchEvent(MotionEvent event) {
// do whatever
}
不要忘记在适当的地方叫super
!
或者,您可以调用setOnTouchListener(this);
在代码中的某处,但这似乎是多余的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.