3

Я разрабатываю Android 2.1 API 7 приложение.onTouchEvent() callback не работает

В моей деятельности, я добавляю 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(...). Зачем??

ответ

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; 
    } 
} 
+0

Я пробовал ваш код, он не работает ни –

+0

Я отредактировал сообщение - он работает сейчас? –

+0

Привет, я хотел бы закрыть диалоговое окно предупреждения, когда пользователь коснется экрана, но «.setOnTouchListener (this);» не может использоваться в экземпляре диалога. –

0

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

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

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

     } 
}