`

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;
    }

    
}

 

 

分享到:
评论

相关推荐

    activity_生命周期

    - **`onCreate(Bundle savedInstanceState)`**:当Activity首次被创建时调用,这是设置Activity的初始状态的好时机。例如,你可以在此方法中设置布局、初始化成员变量等。 - **`onStart()`**:当Activity变为可见时...

    新建activity时自定义模板插件

    其中一个非常实用的功能就是自定义模板,尤其是当我们需要频繁创建特定类型的Activity时。本篇将深入探讨如何在Android Studio中创建自定义模板插件,以及如何实现一个欢迎页和模板模式的Activity。 首先,我们要...

    Activity上下滑入滑出的切换方式

    super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); overridePendingTransition(R.anim.slide_in_up, R.anim.slide_out_down); ``` 这将在Activity启动时播放`slide_in_up`,退出时...

    android根据layout文件生成activity及自动注册 Demo

    然而,随着应用的复杂性增加,管理大量的Activity可能会变得繁琐。"android根据layout文件生成activity及自动注册 Demo" 提供了一种自动化的方法来简化这一过程。 这个Demo的核心思想是通过解析XML布局文件(layout...

    Activity之间动画跳转的demo

    在Android开发中,Activity之间的跳转是用户交互的重要部分,而通过添加动画,可以使这种跳转更加生动和吸引人。本教程将详细讲解如何在Android应用中实现Activity间的动画过渡,以提升用户体验。 首先,我们需要...

    android开发中Intent在两个Activity间传值示例

    在目标Activity的`onCreate(Bundle savedInstanceState)`或`onNewIntent(Intent intent)`方法中,可以通过`getIntent()`获取启动该Activity的Intent,然后使用`getStringExtra()`, `getIntExtra()`, `...

    Android中知道界面是哪个activity,一次结束所有Activity退出程序

    在Android应用开发中,Activity是用户界面的基本单元,它负责展示屏幕上的内容和处理用户交互。当用户在应用中导航时,多个Activity可以按照栈(后进先出,LIFO)的方式堆叠起来,形成一个叫做任务(Task)的结构。...

    savedInstanceState demo

    `savedInstanceState` 是一个Bundle对象,存储了Activity或Fragment中需要保存的数据,以便在后续重建时能够恢复到之前的状态。下面将详细介绍`savedInstanceState`的工作原理、使用方法以及相关的最佳实践。 ### ...

    完美实现将activity作为dialog弹窗进行弹出

    如果希望Activity同时具备普通Activity的功能,我们可以在启动该Activity时添加额外的Intent Flag,比如`FLAG_ACTIVITY_LAUNCH_ADJACENT`,这将允许Activity在后台栈中正常启动,而不会覆盖当前的Activity。...

    安卓开发示例实现启动和关闭Activity

    在安卓(Android)开发中,Activity是用户界面的基本单元,它是应用程序中负责用户交互的部分。在实际应用中,我们经常需要在不同的Activity之间切换,以实现应用的不同功能。本示例将详细介绍如何创建并管理两个...

    Android 悬浮Activity ( Dialog风格)

    在Android开发中,"悬浮Activity"通常指的是一个可以悬浮在其他应用之上,类似Dialog样式但功能更为丰富的Activity。这样的设计可以提供用户一种便捷的方式访问或操作应用,而无需完全退出当前正在使用的应用。悬浮...

    安卓基本知识只Activity学习源代码

    为了防止数据丢失,可以在`onSaveInstanceState(Bundle outState)`中保存状态信息,然后在`onCreate(Bundle savedInstanceState)`或`onRestoreInstanceState(Bundle savedInstanceState)`中恢复。 最后,了解...

    Android上Activity之间跳转

    此外,我们还可以使用FLAG_ACTIVITY_*系列的标志来控制Activity的启动行为,比如`FLAG_ACTIVITY_NEW_TASK`用于在新的任务栈中启动Activity,`FLAG_ACTIVITY_CLEAR_TOP`则会清除当前Activity之上所有栈中的Activity。...

    Activity使用setContentView切换界面

    在Android应用开发中,`Activity`是Android系统中的一个核心组件,它负责处理用户交互和显示用户界面。`setContentView`方法是`Activity`中用于加载布局文件到当前`Activity`的主要方法,使得我们能够在应用中展示...

    设备旋转与Activity生命周期

    然后在`onCreate(Bundle savedInstanceState)`或`onRestoreInstanceState(Bundle savedInstanceState)`中恢复这些数据。 2. **配置变更不销毁Activity**:通过在AndroidManifest.xml中对应的Activity标签中添加`...

    关闭所有activity

    每个Activity启动时可以通过Intent设置FLAG_ACTIVITY_NEW_TASK和FLAG_ACTIVITY_CLEAR_TOP标志,这样在打开新Activity时,会清除栈顶以上的所有Activity,达到类似关闭所有Activity的效果。 综上所述,关闭所有...

    Activity活动详简总结

    另外,Android的Bundle类提供了一种存储和恢复Activity状态的机制,当Activity被销毁并重建时,可以通过savedInstanceState来恢复之前的状态。 综上所述,Activity作为Android开发的基础,其详细理解与熟练运用对...

    Eclipse编写的Android Activity之间简单地传递参数应用实例

    在Android开发中,Activity是应用程序的基本构建块,用于呈现用户界面和处理用户交互。当需要在不同的Activity之间共享数据时,我们通常会涉及到参数的传递。本实例将深入讲解如何在Eclipse V4.2.0环境下,使用...

    Android之Activity应用小例子

    在Android开发中,Activity是应用程序的基本构建块,它代表了用户可以与之交互的界面。Activity通常用于展示屏幕上的信息,接收用户输入,并处理相关的事件。在这个“Android之Activity应用小例子”中,我们将深入...

    IRVH-Activity_Lifecycle_and_State

    默认情况下,系统会销毁并重建Activity,开发者可以通过重写`onSaveInstanceState(Bundle outState)`来保存实例状态,并在`onCreate(Bundle savedInstanceState)`或`onRestoreInstanceState(Bundle ...

Global site tag (gtag.js) - Google Analytics