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

时间:2017-12-26 15:33:32

标签: java android android-view android-custom-view android-lifecycle

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

考试班

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()

我想过制作静态布尔值但是没办法。

1 个答案:

答案 0 :(得分:2)

  

我是否可以在自定义视图中进行一些检查以确定是否还原视图?

refs/heads/foo课程中,存在此类API。

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