在view中如何保存自定义view的状态

本文介绍了一种简单的自定义视图(View)实现,通过重写onSaveInstanceState和onRestoreInstanceState方法来保存和恢复视图的状态,这对于需要在不同生命周期阶段保存视图状态的应用场景非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

O(∩_∩)O哈哈~,今天看别人代码时发现有好东西就顺便弄上来了,其实很简单也很实用,先记录下来。

package com.huangxj.androidall;


import android.content.Context;
import android.os.Parcel;
import android.os.Parcelable;
import android.view.View;

public class TestMyView extends View {
	
	
	private int mCurrentPage = 0;

	public TestMyView(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
	}
	
	@Override
	protected Parcelable onSaveInstanceState() {
		
		Parcelable pl = super.onSaveInstanceState();
		SaveState st = new SaveState(pl);
		st.currentPage = mCurrentPage;
		return st;
	}
	
	@Override
	protected void onRestoreInstanceState(Parcelable state) {
		SaveState st = (SaveState) state;
		super.onRestoreInstanceState(st.getSuperState());
		mCurrentPage = st.currentPage;
		
		requestLayout();
	}
	
	protected static class SaveState extends BaseSavedState{
		
		int currentPage = 0;

		public SaveState(Parcelable pl) {
			super(pl);
			
		}
		
		public SaveState(Parcel in) {
			super(in);
			currentPage = in.readInt();
		}

		@Override
		public void writeToParcel(Parcel dest, int flags) {
			super.writeToParcel(dest, flags);
			dest.writeInt(currentPage);
		}

		@SuppressWarnings("UnusedDeclaration")
		public static final Parcelable.Creator<SaveState> CREATOR = new Parcelable.Creator<SaveState>() {
			@Override
			public SaveState createFromParcel(Parcel in) {
				return new SaveState(in);
			}

			@Override
			public SaveState[] newArray(int size) {
				return new SaveState[size];
			}
		};
		
	}

}


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值