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

时间:2019-02-04 02:28:29

标签: android orientation xml-drawable

无论应用程序是什么方向,启动时都可以正常工作,但是更改方向后,如果选择了按钮,则该按钮将变为未选中状态。 这是按钮的可绘制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>  

1 个答案:

答案 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,说明如何使用片段保存状态。