我有3个自定义视图。 第一个效果很好。当我启动一个intent并返回用户输入的任何内容时,它包含一个EditText。
第二个包含TextView,第三个包含一个Spinner。当我启动我的意图并返回时,它们不会保存。
我认为知道如何在我的自定义视图中使用onSaveInstanceState和onRestoreInstanceState来保存数据,但是当包含自定义视图的活动未被杀死(意味着它只是暂停)时,我不会调用返回onRestoreInstanceState。
当我需要保存时,这就是我在自定义视图中调用的内容。
@Override
public Parcelable onSaveInstanceState() {
textValue = editText.getText().toString();
Bundle bundle = new Bundle();
bundle.putParcelable("instanceState", super.onSaveInstanceState());
bundle.putString(TEXT_VALUE_KEY, this.textValue);
return bundle;
}
@Override
public void onRestoreInstanceState(Parcelable state) {
if (state instanceof Bundle) {
Bundle bundle = (Bundle) state;
textValue = bundle.getString(TEXT_VALUE_KEY);
editText.setText(textValue);
super.onRestoreInstanceState(bundle.getParcelable("instanceState"));
return;
}
super.onRestoreInstanceState(state);
}
我不确定我应该做什么,因为没有调用onRestoreInstanceState。我认为EditText customView可以工作,因为默认的android行为会暂时保存它们,但它不会保存微调器或TextView。
答案 0 :(得分:0)
您应该更改onCreate()
方法,以便检查Activity
是否已经调用过这样的onSavedInstanceState
:
@Override
public void onCreate(Bundle savedInstanceState) {
if(savedInstanceState == null) {
// The activity haven't called onSavedInstanceState(), which means you should initialize your objects and UI here
}
else {
// Whatever states you saved onSavedInstanceState() are stored in savedInstaceState, so use them to reconstruct your customViews
}
}