2 myq 26 myq_26 于 2012.11.22 17:23 提问

onTouchEvent() 回调函数不能被调用

我在Android 2.1 API 7环境中开发一个应用程序。
在activity中,我添加onTouchEvent()回调函数来处理screen touch事件。

public class MyActivity extends Activity{

   ...

   @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            //Did something here
            Log.v("TOUCH SCREEN", "test");
        }

        return super.onTouchEvent(event);
    }
}

我在真机中测试,当我触摸手机的屏幕时,onTouchEvent()回调函数没有被调用,因为我没看见Log.v(...)信息,为什么呢?

3个回答

Baby_Bonnie
Baby_Bonnie   2012.11.22 18:07
已采纳

使用toast widget,然后函数就能被调用

package com.aendroid.tuetsh;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.widget.Toast;

public class Tuetsh extends Activity {
    /** 当activity第一次被创建时调用 */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    public boolean dispatchTouchEvent(MotionEvent ev) {
        Log.v("TOUCH SCREEN", "test");
        Toast.makeText(getBaseContext(), "How dare you touch me", Toast.LENGTH_SHORT).show();
        return super.dispatchTouchEvent(ev);

        } 
}
u011133213
u011133213   2013.09.05 13:08

是用dispatchTouchEvent,来处理点击事件!

u010442666
u010442666   2013.10.11 17:48

换一种试试输出一下或toast一下,应为具体原因有很多,可能是后台日志不打印也可能是ontouch事件未响应

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
ViewGroup onInterceptTouchEvent,ViewGroup onTouchEvent,View onTouchEvent执行顺序说明
今天抽出了一些时间实践了viewgroup和view的触摸事件顺序,之前也试过,总是忘记,今天记下笔记说明一下 首先 onInterceptTouchEvent只会出现在viewgroup中,view中是没有此方法的。看下官方给出onInterceptTouchEvent返回值的解释 Return true to steal motion events from the children an
Activity调用dispatchTouchEvent()和onTouchEvent()方法
public class MyTextView extends TextView { public MyTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public MyTextView(Context context, At
Android onTouch方法调用了两次的问题
今天在做安卓应用时,有一个功能是点一下某个部件的时候弹出一个对话框,用的是onTouchListener,但是发现点击的时候弹出了两个窗口,观察输出,发现onTouch事件调用了两次: 怎么回事呢? 原来,onTouch事件在手指按下和离开的时候分别调用了一次。 那么我只需要弹出一个窗口,也就是触发一次,怎么修改呢? 答案就是判断一下当前的onTouch事件是正在按下还是正在离开,
Activity Touch事件分发 dispatchTouchEvent onTouchEvent
1 先了解一下  Activity 的   dispatchTouchEvent  方法 http://developer.android.com/reference/android/app/Activity.html#dispatchTouchEvent(android.view.MotionEvent) 官方解析是 public boolean dispatchTouchE
Android onTouchEvent的MotionEvent.ACTION_UP不响应
自己写了一个自定义View,里面要监听ouTouchEvent事件,于是我重写了View的onTouchEvent方法。 代码如下: @Override public boolean onTouchEvent(MotionEvent event) { int x = (int) event.getX(); int y = (int) event.getY
android-自定义ViewGroup与onTouchEvent监听-随心
在自定义ViewGroup的子类控件时(即LinearLayout,RelativeLayout...)想在里面触发onTouchEvent里的MOVE事件时,由于该事件会被它的子控件捕获。所以我们应在onInterceptTouchEvent拦截事件。代码如下: @Override public boolean onInterceptTouchEvent(MotionEvent e) {
Activity中重载的dispatchTouchEvent 和 onTouchEvent不被调用
0x01. dispatchTouchEvent 和 onTouchEvent不响应dispatchTouchEvent做为Activity的顶层事件分发接口怎么会不响应?肯定是被拦截了!0x02. getWindow().getCallback()在Activity的onResume中把getWindow().getCallback()打印出来. Android应用程序窗口(Activity)
android 自定义view,绘制与onTouchEvent事件(一)
绘制 构造方法 自定义view需要继承View类,重写两个构造方法 //用在代码new该view对象,初始化 public MyView(Context context) { super(context); init(); } //一般添加构造---》view放进布局,系统实例化 public MyView(Cont
onTouch和onTouchEvent方法调用顺序
安卓中view和viewGroup在点击的时候有两个方法,onTouch和onTouchEvent onTouch是设置了onTouchLisenter之后的回调方法。如果设置了onTouchLisenter就会调用ontouch方法,同时onTouchEvent方法不会再被调用 如果没有设置onTouchLisenter,就会调用onTouchEvent。就是说ontouch的优先级比onT
Fragment中onTouchEvent的实现
众所周知,Android开发中可以通过onTouchEvent()实现对手势触摸的监听,通过监听实现一些特殊的要求实现我们想要的效果,在Activity中当然没问题,直接重写onTouchEvent即可。但是在Fragemnt类中呢?Fragment类中是没有onTouchEvent()方法的,这怎么实现呢?我的开发中就遇到过这种问题。百思不得姐,无奈,百度了一下,发现好多的文章都提供了在Frag