Activity_savedInstanceState

2554 ワード

2つのActivityがあると仮定し、それぞれMainActivity,SecondActivity.
MainActivityにはEditText編集ボックスがあり、いくつかのコンテンツを編集すると、MainActivityはecondActivityにジャンプされ、ちょうどシステムがMainActivityを殺し、EditTextのコンテンツを保存しなければ、システムが再びMainActivityを復元すると、編集されたコンテンツは表示されません.
Activity状態はonSaveInstanceState法により保存することができる.
 
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;
    }

    
}