承接上一篇博文,工程项目,需要一个统一的页面管理,无论工程大小,也需要进行规范化,目前比较流行的项目模式就是mvp,要实现一个MVP的项目,首先应该对页面进行统一的管理和规范。鉴于次目的,本次博文的目的就是对page页面进行了统一的管理。
首先创建一个Page类
创建一个PageState类,这个类主要用来存储Page页面的基本信息
public class PageState implements Parcelable { final String mClassName; final int mId; final int mContainerId; final String mTag; final boolean mRetainInstance; final boolean mDetached; final boolean mVisible; final Bundle mArguments; Bundle mSavedPageState; Page mInstance; public PageState(Page page) { mClassName = page.getClass().getName(); mId = page.mId; mContainerId = page.mContainerId; mTag = page.mTag; mRetainInstance = page.mRetainInstance; mDetached = page.mDetached; mVisible = page.mVisible; mArguments = page.mArguments; } public PageState(Parcel in) { mClassName = in.readString(); mId = in.readInt(); mContainerId = in.readInt(); mTag = in.readString(); mRetainInstance = in.readInt() != 0; mDetached = in.readInt() != 0; mVisible = in.readInt() != 0; mArguments = in.readBundle(); mSavedPageState = in.readBundle(); } public Page instantiate(PageActivity activity) { if (mInstance != null) { return mInstance; } if (mArguments != null) { mArguments.setClassLoader(activity.getClassLoader()); } mInstance = Page.instantiate(activity, mClassName, mArguments); if (mSavedPageState != null) { mSavedPageState.setClassLoader(activity.getClassLoader()); mInstance.mSavedPageState = mSavedPageState; } mInstance.setId(mId); mInstance.mRestored = true; mInstance.mContainerId = mContainerId; mInstance.mTag = mTag; mInstance.mRetainInstance = mRetainInstance; mInstance.mDetached = mDetached; mInstance.mVisible = mVisible; mInstance.mPageManager = activity.mPages; return mInstance; } public int describeContents() { return 0; } public void writeToParcel(Parcel dest, int flags) { dest.writeString(mClassName); dest.writeInt(mId); dest.writeInt(mContainerId); dest.writeString(mTag); dest.writeInt(mRetainInstance ? 1 : 0); dest.writeInt(mDetached ? 1 : 0); dest.writeInt(mVisible ? 1 : 0); dest.writeBundle(mArguments); dest.writeBundle(mSavedPageState); } public static final Parcelable.Creator<PageState> CREATOR = new Parcelable.Creator<PageState>() { public PageState createFromParcel(Parcel in) { return new PageState(in); } public PageState[] newArray(int size) { return new PageState[size]; } }; }