【问题标题】:Every time orientation change, button state changes每次方向改变,按钮状态都会改变
【发布时间】:2019-02-04 02:28:29
【问题描述】:

应用程序启动时它工作正常,无论它是什么方向,但是在改变方向之后,如果按钮被选中,它就会变为未选中。 这是按钮的可绘制 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>  

【问题讨论】:

    标签: android orientation xml-drawable


    【解决方案1】:

    当您的设备上的方向发生变化时,您的 Activity 将被销毁并重新创建。您可以通过实现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,关于如何使用 Fragments 保存状态。

    【讨论】:

    • 它在 API26 及以上和 API23 及以下工作正常,但在 API24 中不工作
    猜你喜欢
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 2018-01-21
    • 1970-01-01
    相关资源
    最近更新 更多