【发布时间】:2017-12-26 15:33:31
【问题描述】:
在我的自定义视图中,如果无法恢复某些字段,我想恢复或创建新实例。令人惊讶的是我没有找到答案
示例类
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()
我想过将静态布尔值设为静态布尔值,但这不是可行的方法。
【问题讨论】:
标签: java android android-view android-custom-view android-lifecycle