现在的位置: 首页 > 综合 > 正文

关于Activity的状态保存

2018年03月20日 ⁄ 综合 ⁄ 共 1299字 ⁄ 字号 评论关闭

可以通过onSaveInstanceState函数实现。
1、例如,保存Activity的theme,
在onSaveInstanceState函数中如下实现
    @Override
    protected void onSaveInstanceState(Bundle savedInstanceState) {
        super.onSaveInstanceState(savedInstanceState);
        savedInstanceState.putInt("theme", mCurTheme);
    }
2、在Activity的onCreate函数中将保存的值取出。
例如,
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        if (savedInstanceState != null) {
            mCurTheme = savedInstanceState.getInt("theme");

            // Switch to a new theme different from last theme.
            switch (mCurTheme) {
                case android.R.style.Theme_Holo_Light:
                    mCurTheme = android.R.style.Theme_Holo_Dialog;
                    break;
                case android.R.style.Theme_Holo_Dialog:
                    mCurTheme = android.R.style.Theme_Holo;
                    break;
                default:
                    mCurTheme = android.R.style.Theme_Holo_Light;
                    break;
            }
            setTheme(mCurTheme);
        }

        setContentView(R.layout.activity_recreate);
    }
其中mCurTheme是Activity的一个类变量,定义如下,
int mCurTheme;
3、在某处调用recreate函数。
例如,在如下按钮的监听器中,
    private OnClickListener mRecreateListener = new OnClickListener() {
        public void onClick(View v) {
            recreate();
        }
    };

这样实现了保存Activity当前设置的theme的功能。

抱歉!评论已关闭.