`

Activity_savedInstanceState

阅读更多

假设有两个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;
    }

    
}

 

 

分享到:
评论

相关推荐

    深入Android开发全方位指南.docx

    项目结构: ... protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } activity_main.xml: xml Copy code ...

    Android代码-安卓路由解决方案

    ActivityRequest.from(this, "activity://example/kevin/123455") .open(); Register @Route("activity://example/:s{username}/:i{password}") public class ExampleActivity extends Activity{ @Override ...

    Android代码-Immersive

    Immersive 一行代码实现沉浸式,适配android4.4到8.0 ,沉浸式前所未有的简单。... * @param activity 当前需要使用沉浸式的Activity * @param layoutRes 当前activity使用的布局资源Id * @param s

    Android代码-一个简洁的基于 RxJava2 的事件总线库

    public class YourActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 注册 ...

    解决Android Studio Log.v和Log.d不显示的问题

    protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_2_32); Log.v(Activity_2_32,This is ---------------------------); Log.v...

    简易计算器

    import android.app.Activity; import android.view.Menu; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate...

    Android ListView简单应用

    public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ...

    permission.zip

    在Activity 中写二行代码就够了 从我的项目中移出来的 供参考 @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); // setContentView(R....

    android时间控件

    setContentView(R.layout.activity_main); initializeViews(); final Calendar c = Calendar.getInstance(); mYear = c.get(Calendar.YEAR); mMonth = c.get(Calendar.MONTH); mDay = c.get...

    数据存储练习

    public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } // ...

    Android 柱状图

    setContentView(R.layout.activity_main); initData(); LinearLayout layout = (LinearLayout) findViewById(R.id.rela); layout.setGravity(Gravity.CENTER); LinearLayout.LayoutParams pm = new ...

    Android代码-CatLoadingView

    Android CatLoadingView This project idea is from Link. Thanks for the idea. I like the animation in this picture: ...as you see it right now, I hope you like ... setContentView(R.layout.activity_main);

    Android代码-RxBus2

    RxBus2 Rxbus2 by rxjava2.0 ... setContentView(R.layout.activity_main); RxBus.get().register(this); } public void test1005(View view){ RxBus.get().send(1005); } public void test1005Stri

    Android代码-YLListView仿IOS弹簧效果的ListView

    setContentView(R.layout.activity_main); listView = (YLListView) findViewById(R.id.listView); // 不添加也有默认的头和底 View topView=View.inflate(this,R.layout.top,null); listView.addHeaderView...

    Android代码-FaceTextLayout

    FaceTextInputLayout 问题 如何对长度不一的颜文字进行整齐的排版呢! Thanks > 真的非常感谢这位童鞋提供的思路,大家有兴趣... setContentView(R.layout.activity_face_text_demo); FaceTextInputLayout faceText

    Android代码-简单实用的页面多状态布局(content,loading,empty,error)

    LoadingLayout 简单实用的页面多状态布局(content,loading,empty,error) Gradle repositories { ...} dependencies { ...} ...在主题中设置默认样式 ... setContentView(R.layout.activity_main); // ... vLoad

    Custom-ActionBar

    将activity_base.xml复制到res/layout目录,然后让要显示的Activity继承改类:public class MainActivity extends BaseActivity{ @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate...

    将图片转换成声音

    public class MainActivity extends Activity { Button get1; ImageView iv; RelativeLayout rl; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ...

    安卓java读取网页源码-Andorid-learning:Andorid-学习

    super.onCreate(savedInstanceState); getSupportActionBar().hide(); //<< this setContentView(R.layout.activity_main); } 跳转不同activity并传值 不传值 public void sendMessage(View view) { start...

    Android移动开发实验6.doc

    Acivity代码: public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity...

Global site tag (gtag.js) - Google Analytics