При каждом изменении ориентации состояние кнопки изменяется - PullRequest
0 голосов
/ 04 февраля 2019

Работает нормально, когда приложение запускается, независимо от его ориентации, но после изменения ориентации, если кнопка выбрана, она становится невыбранной.это нарисованный 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 голосов
/ 04 февраля 2019

При изменении ориентации на вашем устройстве ваша активность будет уничтожена и воссоздана.Вы можете сохранить и восстановить состояние кнопки, введя onSaveInstanceState(Bundle outState).Для получения дополнительной информации о жизненном цикле действия и о том, как использовать onSaveInstanceState/onRestoreInstanceState, ознакомьтесь с этой статьей .

Вы можете записать состояние кнопки как логическое значение, используя 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));
}

Вот дополнительный ресурс вкак сохранить состояние с помощью фрагментов.

...