在我的活动中,我通过使用新视图(setContentView())替换当前视图来响应onClick()。由于某种原因,当我执行此操作然后稍后返回原始视图时,我最初按下的按钮仍然看起来像是被按下了。
如果您以某种方式“刷新”(例如,使用轨迹球在其上滚动),则它将恢复为未按下状态。好像按钮没有收到“触摸”事件。
奇怪的是:这仅在我的T-Mobile Pulse(android 1.5)上发生。它不会在模拟器上发生。
我尝试在显示时在视图上调用invalidate()/ postInvalidate(),但没有任何效果。
最佳答案
我的猜测是您的“修饰”事件将进入您的新内容视图。
您可以:
使用实现您的UI目标的其他方式(多个活动,setContentView()
等)根本不调用onClick()
中的ViewFlipper
。
不要在setContentView()
中立即调用onClick()
,而是post()
一个将调用Runnable
的setContentView()
。那应该将内容视图替换放置在“修饰”事件之后的事件队列中。
就我个人而言,我不是经常调用setContentView()
的活动的忠实拥护者,因为我担心内存泄漏和过多的活动会增加状态和内存管理的难度。例如,假设您为原始布局(A)调用setContentView()
,然后为新布局(B)调用setContentView()
,然后用户旋转屏幕。 Android的默认onSaveInstanceState()
可以帮助您B –挂在EditText
内容之类的东西上-但是对于A,您是一个人。
关于android - 为什么我的按钮保持按下状态?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2487816/