情境:
有两项活动...... 活动A有一个图像按钮,用于启动在屏幕上显示活动B的意图。 活动B有一个图像按钮来完成()本身并导致活动A被显示。 这些按钮位于每个活动的相同位置
问题:
在活动B中,当我双击按钮(而不是单击)时,活动A变为可见但很快再次显示活动B!
第二次触摸事件似乎贯穿于活动A,似乎我可以通过清除活动A的onCreate()中的一些触摸缓冲区来解决这个问题。
如何做到这一点?还是有另一种解决办法吗?
我在模拟器(2.2)和手机(2.3.3)
上重现了这一点答案 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秒或其他东西。