onTouchEvent()回调不起作用

时间:2012-03-01 12:32:55

标签: android android-layout android-intent android-emulator android-widget

我正在开发 Android 2.1 API 7 应用。

在我的活动中,我添加了onTouchEvent()回调来处理屏幕触摸事件:

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);
    }
}

我在真实设备上测试它,但当我触摸屏幕时,似乎没有调用回调,因为我没有看到Log.v(...)信息。为什么?

2 个答案:

答案 0 :(得分:1)

我的问题:有没有onTouchListener?你注册了听众吗?即使你自己处理这个事件,你为什么不回归呢?

这肯定会有效:

public class TouchTestActivity extends Activity implements OnTouchListener {

    TextView textView;
    String text;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        textView = new TextView(this);
        textView.setOnTouchListener(this);
        textView.setClickable(true);
        textView.setEnabled(true);
        textView.setFocusable(true);
        textView.setFocusableInTouchMode(true);
        setContentView(textView);
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            text = "GETTING TOUCHED";
        }
        textView.setText(text);
        return true;
    }
}

答案 1 :(得分:0)

这是一些代码,我认为它会做你想要的。

我使用了Toast小部件,因此您可以轻松看到它的工作原理。

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 {
    /** Called when the activity is first created. */
    @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);

        } 
}