在我的活动中,我覆盖了onTouchEvent
方法:
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.d(TAG, "MyActivity.onTouchEvent");
...
return false;
}
按预期工作,直到应用程序进入后台,当它返回时,该方法不再被调用。
为了尝试了解正在发生的事情,我在根视图中添加了一个触控侦听器:
findViewById(android.R.id.content).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
Log.d((TAG, "content.onTouch view: " + view);
return false;
}
}
在转到后台之前和之后,我获得了两种方案的相同输出,在这两种情况下,它打印的视图都是相同的:android:id/content
。
由于那不是“我的观点”,我也尝试过:
((ViewGroup) findViewById(android.R.id.content)).getChildAt(0).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
Log.d((TAG, "content.onTouch view: " + view);
return false;
}
}
在两种情况下都是相同的(只是它打印的视图是我的xml文件中的主要布局)。
知道为什么即使在从背景返回后调用OnTouchListener
,但onTouchEvent
不是?
我找不到任何其他视图,对于触摸事件返回true,并且在侦听器中打印视图也证明了这一点。
我过去两天一直想弄明白,但无济于事。愿意得到任何线索或方向。
感谢。