обратный вызов onTouchEvent () не работает - PullRequest
3 голосов
/ 01 марта 2012

Я разрабатываю 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 ]

1 голос
/ 01 марта 2012

Мои вопросы: есть ли onTouchListener? Вы зарегистрировали слушателя? Почему бы вам не вернуть только true, хотя вы сами обрабатываете событие?

Это будет работать наверняка:

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;
    }
}
0 голосов
/ 02 марта 2012

Вот код, я думаю, он будет делать то, что вы хотите.

Я использовал тост-виджет, чтобы вы могли легко увидеть, как он работает.

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

        } 
}
...