从后台返回后不调用Activity.onTouchEvent

时间:2015-10-22 09:40:13

标签: android android-activity touch

在我的活动中,我覆盖了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,并且在侦听器中打印视图也证明了这一点。

我过去两天一直想弄明白,但无济于事。愿意得到任何线索或方向。
感谢。

0 个答案:

没有答案