2015-05-10 34 views
0

在我的计划中,我有2个活动。第一个包含Pin的键盘和第二个显示在后面的键盘。触摸事件发生前活动显示

当用户输入4个PIN码时,第二个活动开始。但问题在于,如果用户在键盘上点击次数过多(超过5次点击),则某些触摸事件会传播到下一个活动,而第一个活动仍会显示。

这种行为也有点依赖设备,对我来说,它发生在Android 4.3的华硕备忘录10平板电脑上,但它不会出现在Android 4.4的nexus 7上。

有没有办法阻止点击事件传播给另一个,而第一个仍然活动? 如果这是不可能的,有没有办法检测活动何时完全显示,以便我可以禁用点击事件,直到它被显示。 因为我真的不希望引脚输入后有任何延迟。

在此先感谢。

+0

不知道你在做什么,我认为你需要检查Android Activity生命周期。您可以使用各种生命周期方法来控制操作何时发生。 http://developer.android.com/training/basics/activity-lifecycle/index.html – Booger

+0

你使用软输入键盘吗? –

+0

无针键盘是自定义视图。无论使用硬键还是sft键盘 – ak7483

回答

0

onStart()onStart()方法就是你想要禁用点击事件的方法,但你的意见不是一件好事,也许你应该考虑拥有类似“完成”按钮的东西,用户在完成输入后会点击它们?它也可以是有用的,因为你可以编写代码来检查长度或验证PIN码

+0

完成按钮不是一个选项,因为这意味着需要额外点击一次(此应用程序是pos程序所有的互动必须尽可能快)。 也有验证,但它根本不影响这个问题。 据我所知,我可以禁用触摸事件onStart(),但我何时启用它们回来。我怎样才能知道什么时候在屏幕上绘制活动(包含片段如果可能) – ak7483

+0

你可以使用__view.post(new Runnable(){ @Override public void run(){ //你想在视图中运行的代码第一次可见 } } )__在您的__OnCreateView__片段中 –

+0

对不起,很长一段时间回复。 这不再是一个问题,因为我们决定使用另一种方法将片段从第一个活动移动到第二个活动。 我们使用的糖orm可以从主数据库甚至从数据库中获取数据,并且我们在片段的onCreateView方法中加载了大量数据。我的猜测是,这阻止了事件的传播,直到数据加载并且事件可以再次传播(尽管我还没有测试过)。 – ak7483