我在保持按钮状态时遇到问题 - 比如 Button1.setActivated(true)
。当方向改变时,这将被遗忘,并且不会重新激活或显示为已激活。
我想我可以使用 IF 来测试 Button 状态的状态,将其存储在一个变量中,然后使用 onSaveInstanceState/onRestoreInstanceState 将其返回。然后在重新创建每个按钮时添加更多检查。但这似乎是一种非常复杂的做事方式。
肯定会有更好的方法来做到这一点吗?
我对 Android 还是很陌生,所以我可能会遗漏一些明显的东西。
谢谢。
更新:setActivated 使用选择器更改按钮的背景颜色。正是这种颜色在方向变化中被遗忘了。
按钮选择器背景.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/button_background_active"
android:state_activated="true" />
<item android:drawable="@color/button_background" />
</selector>
主 Activity .java
public void onClick(View arg0) {
switch(arg0.getId()){
case R.id.button_1:
button_1.setActivated(true);
}
}
最佳答案
这就是 Android 的工作原理。建议您使用 onSaveInstance/onRestoreInstance 进行修复是处理它的正确方法。这是必要的原因是因为您的整个 Activity 被销毁并重新创建。那些保存的包是将 Activity 状态恢复到之前状态的关键。你可以在这里读更多关于它的内容: Saving State
请注意,恢复状态的需要不仅仅发生在屏幕方向等配置更改期间。当用户后台是您的应用程序并稍后重新打开它时,可能会发生这种情况。还有很多其他情况。使用保存/恢复状态可确保它能够处理所有这些情况并正确恢复您的 Activity ...在您的情况下,激活该按钮。
关于方向更改时的 Android 按钮状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23875350/