如何确定是否正在恢复View状态

问题描述 投票:2回答:1

在我的自定义视图中,我有一些我想要恢复的字段,或者如果它不能恢复则创建新实例。令人惊讶的是,我没有找到答案

示例类

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
1个回答
2
投票

在自定义视图中是否有一些检查我可以确定是否将恢复视图?

View类中,没有这样的API。

给你的唯一接缝是onRestoreInstanceState(Parcelable),“永远不会被称为null状态”。因此,如果您最终进入onRestoreInstanceState(),那么您可以假设视图正在恢复。否则就不是。

© www.soinside.com 2019 - 2024. All rights reserved.