Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在触摸屏上完成(关闭)Android活动_Android - Fatal编程技术网

在触摸屏上完成(关闭)Android活动

在触摸屏上完成(关闭)Android活动,android,Android,如何在Adroid on touch中终止活动。这里我展示了details.xml中描述的一个视图。我需要在触摸时取消该活动。我尝试了以下代码。但它不起作用。有什么想法吗 public class Details extends Activity { protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R

如何在Adroid on touch中终止活动。这里我展示了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;
    }       
}
  • 只有在视图层次结构中finger下没有其他视图使用该事件时,才会调用onTouchEvent()。这是不常见的,因为许多视图确实与触摸事件交互

  • 在onTouchEvent()中执行操作而不查看实际事件是什么是错误的

  • 通常,您应该实现一个视图,该视图对触摸做出反应并执行适当的操作

  • 你应该使用

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

    您没有在onCreate()中安装侦听器。比如:
    findViewById(R.id.some_view).setOnTouchListener(this)

    我知道这是个老问题,但如果有人需要,我的解决方案是:

    我也遇到了同样的问题,所以我通过给我的父布局,即(consraintLayout)一个id,然后在setOnClickListener()方法中调用finish()解决了这个问题,它成功了

    View v = findViewById(R.id.validateLayout);
    
        v.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    
    validateLayout是我的活动的父约束布局

    欢迎进行任何审查


    另外,我想知道Addev的建议是否比此代码更好。

    您确定会调用onTouchEvent吗?API文档提到,只有在没有子视图使用该事件的情况下,才会调用它作为最后手段。我认为它不会被调用。你知道如何将“onTouchEvent”添加到我使用的视图中吗?因为这里我使用的是xml。你能检查一下吗:他不需要。他试图在触摸屏幕时关闭活动。