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 回答