在我的自定义视图中,我有一些我想要恢复的字段,或者如果它不能恢复则创建新实例。令人惊讶的是,我没有找到答案
示例类
class MyView extends View {
private Calendar calendar;
public MyView(Context context) {
super(context);
if(!restoring())
calendar = Calendar.getInstance();
}
@Nullable
@Override
protected Parcelable onSaveInstanceState() {
Bundle b = new Bundle();
b.putParcelable("state", super.onSaveInstanceState());
b.putLong("calendar", calendar.getTimeInMillis());
return b;
}
@Override
protected void onRestoreInstanceState(Parcelable state) {
if (state instanceof Bundle) {
Bundle b = ((Bundle) state);
super.onRestoreInstanceState(b.getParcelable("state"));
calendar = Calendar.getInstance();
calendar.setTimeInMillis(b.getLong("calendar"));
}
}
}
在自定义视图中是否有一些检查我可以确定是否将恢复视图?
在Activity
,有Bundle savedInstanceState
传递给onCreate()
我想过制作静态布尔值但是没办法去。
在自定义视图中是否有一些检查我可以确定是否将恢复视图?
在View
类中,没有这样的API。
给你的唯一接缝是onRestoreInstanceState(Parcelable)
,“永远不会被称为null
状态”。因此,如果您最终进入onRestoreInstanceState()
,那么您可以假设视图正在恢复。否则就不是。