每次方向改变时,按钮状态都会改变
Every time orientation change, button state changes
应用程序启动时,无论它是什么方向,它都可以正常工作,但是在更改方向后,如果按钮被选中,它就会变成未选中状态。
这是按钮
的可绘制对象 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>
当您的设备方向发生变化时,您的 Activity 将被销毁并重新创建。您可以通过实现 onSaveInstanceState(Bundle outState)
来保存和恢复按钮的状态。有关 activity 的生命周期以及如何使用 onSaveInstanceState/onRestoreInstanceState
的更多信息,请查看此 article。
您可以使用 isSelected
将按钮的状态写为布尔值。例如,在您的 activity 中,您可以执行以下操作:
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 介绍了如何使用 Fragment 保存状态。
应用程序启动时,无论它是什么方向,它都可以正常工作,但是在更改方向后,如果按钮被选中,它就会变成未选中状态。 这是按钮
的可绘制对象 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>
当您的设备方向发生变化时,您的 Activity 将被销毁并重新创建。您可以通过实现 onSaveInstanceState(Bundle outState)
来保存和恢复按钮的状态。有关 activity 的生命周期以及如何使用 onSaveInstanceState/onRestoreInstanceState
的更多信息,请查看此 article。
您可以使用 isSelected
将按钮的状态写为布尔值。例如,在您的 activity 中,您可以执行以下操作:
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 介绍了如何使用 Fragment 保存状态。