每次方向改变时,按钮状态都会改变

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 保存状态。