无论应用程序是什么方向,启动时都可以正常工作,但是更改方向后,如果选择了按钮,则该按钮将变为未选中状态。 这是按钮的可绘制xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true"
android:drawable="#fff" />
<item android:state_enabled="false"
android:drawable="000" />
<item android:state_checked="true"
android:drawable="#fff" />
<item android:drawable="#f0f0f0" />
</selector>
答案 0 :(得分:1)
当设备上的方向发生变化时,您的活动将被破坏并重新创建。您可以通过实现onSaveInstanceState(Bundle outState)
保存和恢复按钮的状态。有关活动生命周期以及如何使用onSaveInstanceState/onRestoreInstanceState
的更多信息,请查看此article。
您可以使用isSelected
将按钮的状态写为布尔值。例如,在您的活动中,您可以执行以下操作:
public static final String BUTTON_STATE = "buttonState";
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putBoolean(BUTTON_STATE, button.isSelected());
// call superclass to save any view hierarchy
super.onSaveInstanceState(outState);
}
要恢复按钮状态,可以执行以下操作:
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
button.setSelected(savedInstanceState.getBoolean(BUTTON_STATE));
}
这是additional resource,说明如何使用片段保存状态。