![](/img/trans.png)
[英]Fragment recreated every time after orientation change, unable to restore state
[英]Every time orientation change, button state changes
無論應用程序處於什么方向,啟動時都可以正常工作,但是在更改方向后,如果選擇了按鈕,則該按鈕將變為未選中狀態。 這是按鈕的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>
當設備上的方向發生變化時,您的活動將被銷毀並重新創建。 您可以通過實現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));
}
這是有關如何使用片段保存狀態的其他資源 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.