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

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

 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 >
7 <TextView
8 android:layout_width="fill_parent"
9 android:layout_height="wrap_content"
10 android:text="@string/hello"
11 />
12 <!-- 添加一个可供输入的文本框input -->
13 <EditText
14 android:id="@+id/input"
15 android:layout_width="match_parent"
16 android:layout_height="wrap_content"
17 android:text=""
18 />
19 <!-- 添加一个按钮id=secondBtn -->
20 <Button
21 android:id="@+id/secondBtn"
22 android:layout_width="wrap_content"
23 android:layout_height="wrap_content"
24 android:text="@string/secondBtn"
25 />
26 </LinearLayout>

 

2、second.xml

 1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 >
7 <TextView
8 android:layout_width="fill_parent"
9 android:layout_height="wrap_content"
10 android:text="@string/hello"
11 />
12 <!-- 添加一个可供接收参数的文本框get -->
13 <EditText
14 android:id="@+id/get"
15 android:layout_width="match_parent"
16 android:layout_height="wrap_content"
17 android:text=""
18 />
19 </LinearLayout>

 

3、修改AndroidManifest.xml文件

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

 

4、编辑MainActivity.java文件

 1 public class MainActivity extends Activity {
2 /* 定义一个字符串常量content */
3 public static final String CONTENT = "content";
4 /* 定义一个字符串常量MainActivity */
5 private static final String TAG = "MainActivity";
6 /* 定义一个名字为secondBtn的Button */
7 private Button secondBtn;
8 /* 定义一个名字为input的EditText */
9 private EditText input;
10
11 /** Called when the activity is first created. */
12 @Override
13 public void onCreate(Bundle savedInstanceState) {
14 super.onCreate(savedInstanceState);
15 setContentView(R.layout.main);
16 //输出日志信息
17 Log.i(TAG, TAG + "-->onCreate()");
18 //在R文件中找到我们定义的Button
19 secondBtn = (Button) findViewById(R.id.secondBtn);
20 //给secondBtn添加点击事件
21 secondBtn.setOnClickListener(listener);
22
23 input = (EditText) findViewById(R.id.input);
24 //判断Activity保存状态,在MainActivity被覆盖的时候,Activity会自动调用
25 //saveInstanceState()方法,保存被覆盖的Activity类中的相关信息
26 if (null != savedInstanceState
27 && savedInstanceState.containsKey(CONTENT)) {
28 input.setText(savedInstanceState.getString(CONTENT).toString());
29 }
30 }
31
32 @Override
33 protected void onDestroy() {
34 // TODO Auto-generated method stub
35 super.onDestroy();
36 Log.i(TAG, TAG + "onDestory()");
37 }
38
39 @Override
40 protected void onPause() {
41 // TODO Auto-generated method stub
42 super.onPause();
43 Log.i(TAG, TAG + "onPause()");
44 }
45
46 @Override
47 protected void onRestart() {
48 // TODO Auto-generated method stub
49 super.onRestart();
50 Log.i(TAG, TAG + "onRestart()");
51 }
52
53 @Override
54 protected void onResume() {
55 // TODO Auto-generated method stub
56 super.onResume();
57 Log.i(TAG, TAG + "onResume()");
58 }
59
60 @Override
61 protected void onStart() {
62 // TODO Auto-generated method stub
63 super.onStart();
64 Log.i(TAG, TAG + "onStart()");
65 }
66
67 @Override
68 protected void onStop() {
69 // TODO Auto-generated method stub
70 super.onStop();
71 }
72
73 @Override
74 protected void onSaveInstanceState(Bundle outState) {
75 // TODO Auto-generated method stub
76 super.onSaveInstanceState(outState);
77 //当Activity调用onStop()方法之前会调用此方法,这里处理的是保存input(EditText)中的信息
78 String content=input.getText().toString();
79 outState.putString(CONTENT, content);
80 }
81
82 protected OnClickListener listener = new OnClickListener() {
83
84 @Override
85 public void onClick(View v) {
86 Button btn = (Button) v;
87 Intent intent = new Intent();
88 switch (btn.getId()) {//跳转到SecondActivity类,并且把input(EditText)中的内容传过去
89 case R.id.secondBtn:
90 intent.setClass(MainActivity.this, SecondActivity.class);
91 intent.putExtra("text", input.getText().toString());
92 break;
93 }
94 startActivity(intent);
95 }
96 };
97 }

 

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文件

1 <string name="secondBtn">去向SecondActivity类</string>
2 <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中的值是没有变化

 

转载于:https://www.cnblogs.com/hongten/archive/2011/12/30/intent-android.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值