方向改变的Android按钮状态

时间:2014-05-26 17:45:51

标签: android button state

我在保持按钮状态时遇到问题 - 比如Button1.setActivated(true)。当方向改变时,这将被忘记,并且不会重新激活或显示为已激活。

我想我可以使用IF来测试Button状态的状态,将其存储在变量中,然后使用onSaveInstanceState / onRestoreInstanceState返回它。然后在重新创建每个按钮时添加更多检查。但这似乎是一种令人费解的做事方式。

肯定会有更好的方法来做到这一点吗?

我对Android仍然很陌生,所以我可能会遗漏一些明显的东西。

感谢。

更新:setActivated使用选择器更改按钮的背景颜色。这种颜色在方向变化时会被遗忘。

button_selector_background.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>

MainActivity.java

 public void onClick(View arg0) {

  switch(arg0.getId()){

   case R.id.button_1:
     button_1.setActivated(true);
  }
}

1 个答案:

答案 0 :(得分:1)

这就是Android的工作原理。您建议使用onSaveInstance / onRestoreInstance修复是处理它的正确方法。这是必要的原因是因为您的整个Activity被销毁并重新创建。那些保存的包是将Activity的状态恢复到以前的状态的关键。你可以在这里读更多关于它的内容: Saving State

请注意,恢复状态的需要不会在配置更改(如屏幕方向)期间发生。当用户背景为您的应用并稍后重新打开时,可能会发生这种情况。还有很多其他情况。使用保存/恢复状态可确保它能够处理所有这些情况并正确恢复您的活动...在您的情况下,激活该按钮。