1

アプリ内にこの非常に単純なコードを実装しています。

public class EditPreferences extends PreferenceActivity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Log.v(TAG, "onCreate");   
  }


  @Override
  public boolean onTouchEvent(MotionEvent me) {
    Log.v(TAG, "onTouchEvent");   
    return false;
  } 

}

設定画面/アクティビティが表示されたら、その画面で何かに触れたときに「onTouchEvent」ログ メッセージが表示されることを期待しています。

しかし、私はメッセージを受け取りません。これは、 onTouchEvent が呼び出されていないことを示しています。

(ただし、「onCreate」メッセージは表示されます。もちろんです。)

PreferenceActivity の onTouchEvent() が呼び出されないのはなぜですか?

アプリ内の他のコンポーネントによって以前に傍受されている可能性はありますか?

または、実装手順で何か不足していますか?

4

1 に答える 1

6

これは、デフォルトで PreferenceActivity によって実装されている ListView に実際に触れているためです。代わりに、ListView の onTouch を呼び出す必要があります。次のコードを確認してください。

getListView().setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        Toast.makeText(getApplicationContext(), "touched", Toast.LENGTH_SHORT).show();
         return false;
    }
});

あなたのonCreate方法で。

幸運を。

于 2013-06-19T10:34:26.303 に答える