在我的自定义视图中,我有一些我想要恢复的字段,或者如果它不能恢复则创建新实例。令人惊讶的是,我没有找到答案
考试班
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()
我想过制作静态布尔值但是没办法。
答案 0 :(得分:2)
我是否可以在自定义视图中进行一些检查以确定是否还原视图?
在refs/heads/foo
课程中,不存在此类API。
给你的唯一接缝是onRestoreInstanceState(Parcelable)
,“永远不会被View
州”调用。因此,如果您最终进入null
,那么您可以假设视图正在恢复。否则它不。