您的位置:首页 > 移动开发 > Android开发

android开发_Intent高级学习(保存Activity状态)

2011-12-30 11:22 477 查看
Intent高级学习(保存Activity状态)

New Android Project->

Project name:Activity

Build Target:Android 2.2

Application name:ActivityDemo

Package name:com.b510.intent.activity

Create Activity:MainActivity

Min SDK Version:8

Finish

1、main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<!-- 添加一个可供输入的文本框input -->
<EditText
android:id="@+id/input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""
/>
<!-- 添加一个按钮id=secondBtn -->
<Button
android:id="@+id/secondBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/secondBtn"
/>
</LinearLayout>


2、second.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<!-- 添加一个可供接收参数的文本框get -->
<EditText
android:id="@+id/get"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""
/>
</LinearLayout>


3、修改AndroidManifest.xml文件

<!-- 注册SecondActivity类,显示名称为:"@string/secondActivity"中的值 -->
<activity android:name=".SecondActivity"
android:label="@string/secondActivity">
</activity>


4、编辑MainActivity.java文件

public class MainActivity extends Activity {
/* 定义一个字符串常量content */
public static final String CONTENT = "content";
/* 定义一个字符串常量MainActivity */
private static final String TAG = "MainActivity";
/* 定义一个名字为secondBtn的Button */
private Button secondBtn;
/* 定义一个名字为input的EditText */
private EditText input;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//输出日志信息
Log.i(TAG, TAG + "-->onCreate()");
//在R文件中找到我们定义的Button
secondBtn = (Button) findViewById(R.id.secondBtn);
//给secondBtn添加点击事件
secondBtn.setOnClickListener(listener);

input = (EditText) findViewById(R.id.input);
//判断Activity保存状态,在MainActivity被覆盖的时候,Activity会自动调用
//saveInstanceState()方法,保存被覆盖的Activity类中的相关信息
if (null != savedInstanceState
&& savedInstanceState.containsKey(CONTENT)) {
input.setText(savedInstanceState.getString(CONTENT).toString());
}
}

@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Log.i(TAG, TAG + "onDestory()");
}

@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
Log.i(TAG, TAG + "onPause()");
}

@Override
protected void onRestart() {
// TODO Auto-generated method stub
super.onRestart();
Log.i(TAG, TAG + "onRestart()");
}

@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.i(TAG, TAG + "onResume()");
}

@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
Log.i(TAG, TAG + "onStart()");
}

@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
}

@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
//当Activity调用onStop()方法之前会调用此方法,这里处理的是保存input(EditText)中的信息
String content=input.getText().toString();
outState.putString(CONTENT, content);
}

protected OnClickListener listener = new OnClickListener() {

@Override
public void onClick(View v) {
Button btn = (Button) v;
Intent intent = new Intent();
switch (btn.getId()) {//跳转到SecondActivity类,并且把input(EditText)中的内容传过去
case R.id.secondBtn:
intent.setClass(MainActivity.this, SecondActivity.class);
intent.putExtra("text", input.getText().toString());
break;
}
startActivity(intent);
}
};
}


5、编辑SecondActivity.java文件

public class SecondActivity extends Activity {
private EditText get;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);

// 首先获得从MainActivity类传递过来的Intent
Intent intent = getIntent();
// 在MainActivity那边是setExtras(name,key)
// 在这里就是getExtras()了,他的返回类型是一个Bundle类型
Bundle bundle = intent.getExtras();
String text = bundle.getString("text");

get=(EditText)findViewById(R.id.get);
get.setText(text);
}
}


6、修改string.xml文件

<string name="secondBtn">去向SecondActivity类</string>
<string name="secondActivity">secondActivity</string>


7、运行效果

7.1、输入:hello

http://www.cnblogs.com/hongten/gallery/image/112159.html

7.2、点击:按钮”去向SecondActivity”

http://www.cnblogs.com/hongten/gallery/image/112160.html

7.3、点击:返回按钮

http://www.cnblogs.com/hongten/gallery/image/112161.html

EditText中的值是没有变化
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: