如何判断View状态是否正在恢复
How to determine whether View state is being restored
在我的自定义视图中,我有一些字段我想恢复或创建新实例(如果它不会恢复)。令人惊讶的是我没有找到答案
例子class
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()
我想过将静态布尔值设为静态布尔值,但行不通。
Is there some check inside custom view that I can make to determine whether view will be restored?
在 View
class 中 不存在 这样的 API.
唯一给你的接缝是onRestoreInstanceState(Parcelable)
,它将"never be called with null
state"。因此,如果您最终处于 onRestoreInstanceState()
,那么您可以假设视图正在恢复。否则就是不是.
在我的自定义视图中,我有一些字段我想恢复或创建新实例(如果它不会恢复)。令人惊讶的是我没有找到答案
例子class
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()
我想过将静态布尔值设为静态布尔值,但行不通。
Is there some check inside custom view that I can make to determine whether view will be restored?
在 View
class 中 不存在 这样的 API.
唯一给你的接缝是onRestoreInstanceState(Parcelable)
,它将"never be called with null
state"。因此,如果您最终处于 onRestoreInstanceState()
,那么您可以假设视图正在恢复。否则就是不是.