我有一個擴展LinearLayout的自定義視圖。我已經實現onSaveInstanceState()和onRestoreInstanceState()來保存當前的視圖狀態。但是沒有采取任何行動。當我在這兩種方法中放置一個日誌時,Log Cat中也不會顯示任何內容。我認爲這兩種方法甚至沒有被調用。任何人都可以解釋問題出在哪裏?謝謝。onSaveInstanceState()和onRestoreInstanceState(Parcelable狀態)是否不被調用?
@Override
public Parcelable onSaveInstanceState() {
Bundle bundle = new Bundle();
bundle.putParcelable("instanceState", super.onSaveInstanceState());
bundle.putInt("currentPage", currentPage);
return bundle;
}
@Override
public void onRestoreInstanceState(Parcelable state) {
if (state instanceof Bundle) {
Bundle bundle = (Bundle) state;
currentPage = bundle.getInt("currentPage");
Log.d("State", currentPage + "");
super.onRestoreInstanceState(bundle.getParcelable("instanceState"));
return;
}
super.onRestoreInstanceState(state);
}
我有完全相同的問題,但它是因爲我的自定義'View'沒有一個'id'集。從文檔_「請注意,即使凍結啓用,視圖仍然必須分配一個id(通過setId(int))來保存其狀態。」_ –