需要帮助清除活动之间的触摸事件

时间:2011-06-23 23:50:16

标签: android

情境:

有两项活动...... 活动A有一个图像按钮,用于启动在屏幕上显示活动B的意图。 活动B有一个图像按钮来完成()本身并导致活动A被显示。 这些按钮位于每个活动的相同位置

问题:

在活动B中

,当我双击按钮(而不是单击)时,活动A变为可见但很快再次显示活动B!

第二次触摸事件似乎贯穿于活动A,似乎我可以通过清除活动A的onCreate()中的一些触摸缓冲区来解决这个问题。

如何做到这一点?还是有另一种解决办法吗?

我在模拟器(2.2)和手机(2.3.3)

上重现了这一点

2 个答案:

答案 0 :(得分:5)

我遇到了同样的问题。令人惊讶的是,网上关于此的信息非常少。我的解决方案结合了此问题的评论和onTouchEvent never called MapActivity

public class MyActivity extends FragmentActivity {

/** Stores the time (as per SystemClock.uptimeMillis()) of the last
* call to onResume() in order to filter out touch events which occurred before
* the activity was visible. */
private long resumeTime = 0;

@Override
public void onResume() {
    super.onResume();

    resumeTime = SystemClock.uptimeMillis();
}

@Override
public boolean dispatchTouchEvent(MotionEvent event) {
    if (event.getEventTime() < resumeTime) {
    Log.v(TAG, "Discarded touch event with time earlier than onResume()");
    return true;
    }

    return super.dispatchTouchEvent(event);
}
}

答案 1 :(得分:0)

双击并不是一个常见的Android事件。听起来你的点击不是通过一个活动到另一个活动(我认为这是不可能的),而是你在B上点击一次,在A上点击一次。

你可以做的是在onActivityResult()中捕获时间,并且不喜欢人们在活动结果之后点击图像按钮0.3秒或其他东西。