如何在触摸时终止Adroid中的活动。这里我展示了一个在details.xml中描述的视图。我需要解雇触摸活动。我尝试了以下代码。但它不起作用。有什么想法吗?
public class Details extends Activity {
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.details);
}
public boolean onTouchEvent(MotionEvent event){
this.finish();
return true;
}
}
答案 0 :(得分:4)
你应该使用
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
finish();
return super.dispatchTouchEvent(ev);
}
答案 1 :(得分:0)
只有在视图层次结构中手指下没有其他视图消耗了该事件时,才会调用onTouchEvent()。这种情况并不常见,因为许多视图确实与触摸事件相互作用。
在没有查看实际事件的情况下,在onTouchEvent()中执行操作是错误的。
一般来说,你应该实现一个对触摸作出反应并做适当事情的视图。
答案 2 :(得分:0)
我知道这是一个老问题,但是如果有人需要,我的解决方案是:
我遇到了同样的问题,因此我通过给我的父布局(即(consraintLayout)一个ID)然后在setOnClickListener()方法中调用finish()来解决了这个问题。
View v = findViewById(R.id.validateLayout);
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
validateLayout是我的活动的父约束布局。
欢迎任何评论。
我还想知道Addev的建议是否比这段代码更好。
答案 3 :(得分:-1)
您没有在onCreate()中安装侦听器。喜欢: findViewById(R.id.some_view).setOnTouchListener(本);