触摸完成(关闭)Android活动

时间:2011-04-11 18:39:10

标签: android

如何在触摸时终止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;
    }       
}

4 个答案:

答案 0 :(得分:4)

你应该使用

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    finish();
    return super.dispatchTouchEvent(ev);
}

答案 1 :(得分:0)

  1. 只有在视图层次结构中手指下没有其他视图消耗了该事件时,才会调用onTouchEvent()。这种情况并不常见,因为许多视图确实与触摸事件相互作用。

  2. 在没有查看实际事件的情况下,在onTouchEvent()中执行操作是错误的。

  3. 一般来说,你应该实现一个对触摸作出反应并做适当事情的视图。

答案 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(本);