Activity_savedInstanceState

本文介绍了一种在Android应用中保存Activity状态的方法,通过onSaveInstanceState方法可以在MainActivity被销毁前保存EditText的内容,并在Activity重建时恢复这些内容。

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

假设有两个Activity,分别是MainActivity,SecondActivity.

MainActivity有一个EditText编辑框,设想一种情况:当我们编辑了一些内容时,MainActivity被跳转去了econdActivity,而正好系统又将MainActivity杀死,如果我们不对EditText的内容加以保存,当系统再度恢复MainActivity时,编辑好的内容就不会出现了。

可以借助onSaveInstanceState方法来保存Acitivity状态.

 

MainActivity:

 

package com.example.onsaveinstancestatedemo;

import android.R.string;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.support.v4.app.NavUtils;

public class MainActivity extends Activity {
	private EditText txt;
	private Button btn;
	private final static String TAG="MainActivity";
	private final static String KEY="key";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txt=(EditText)findViewById(R.id.editText1);
        if(savedInstanceState!=null&&savedInstanceState.containsKey(KEY)==true)//如果savedInstanceState不为空,用KEY值找到对应的EditText内容,填入EditText控件
        {
        	txt.setText(savedInstanceState.getString(KEY));
        }
        btn=(Button)findViewById(R.id.btn);
        Log.i(TAG, "MainActivity-->onCreate");
        btn.setOnClickListener(listener);
    }
    private View.OnClickListener listener=new View.OnClickListener()
	{
		
		@Override
		public void onClick(View v)
		{
			// TODO Auto-generated method stub
			Intent intent=new Intent(MainActivity.this,SecondActivity.class);
			startActivity(intent);
			
		}
	};

    @Override
	protected void onSaveInstanceState(Bundle outState)//在一个Activity进入不可见状态,被onStop之前,系统会调用onSavedInstanceState来保存状态
	{
		// TODO Auto-generated method stub
		super.onSaveInstanceState(outState);
		String content=txt.getText().toString();//将EditText的内容保存到Bundle中,以便下次恢复Activity时读取
		outState.putString(KEY, content);
	}


	@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值