在我的活动中,我通过使用新视图(setContentView())替换当前视图来响应onClick()。由于某种原因,当我执行此操作然后稍后返回原始视图时,我最初按下的按钮仍然看起来像是被按下了。

如果您以某种方式“刷新”(例如,使用轨迹球在其上滚动),则它将恢复为未按下状态。好像按钮没有收到“触摸”事件。

奇怪的是:这仅在我的T-Mobile Pulse(android 1.5)上发生。它不会在模拟器上发生。

我尝试在显示时在视图上调用invalidate()/ postInvalidate(),但没有任何效果。

最佳答案

我的猜测是您的“修饰”事件将进入您的新内容视图。

您可以:


使用实现您的UI目标的其他方式(多个活动,setContentView()等)根本不调用onClick()中的ViewFlipper
不要在setContentView()中立即调用onClick(),而是post()一个将调用RunnablesetContentView()。那应该将内容视图替换放置在“修饰”事件之后的事件队列中。


就我个人而言,我不是经常调用setContentView()的活动的忠实拥护者,因为我担心内存泄漏和过多的活动会增加状态和内存管理的难度。例如,假设您为原始布局(A)调用setContentView(),然后为新布局(B)调用setContentView(),然后用户旋转屏幕。 Android的默认onSaveInstanceState()可以帮助您B –挂在EditText内容之类的东西上-但是对于A,您是一个人。

关于android - 为什么我的按钮保持按下状态?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2487816/

10-09 07:37