3

開発中Android 2.1 API 7アプリ。私の活動にonTouchEvent()コールバックが機能しない

は、私が画面タッチイベントを処理する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); 

     } 
} 
関連する問題