activity之间通过全局变量传递数据
一、简介
Application域中的onCreate方法是Android程序的入口,Android程序运行的时候就自动加载Application的对象,感觉Main方法应该是封装在这个里面的。
activity中传递数据主要用intent方式和全局变量方式。
二、使用步骤
1、新建MyApplication类继承Application类
public class MyApplication extends Application
继承之后MyApplication类就是全局的了
2、在传输数据页面调用MyApplication类并生成数据
MyApplication app=(MyApplication) getApplication();
app.setName("fry");
app.setAge(22);
3、在接收数据页面调用MyApplication类并输出数据
MyApplication app=(MyApplication) getApplication();
tv_answer.setText("app:" + app );
4、在AndroidManifest.xml配置文件中添加MyApplication类的Android启动配置
android:name="activityGlobelVariable.MyApplication"
5、大功告成
三、具体代码实例
代码中进行了两次优化:
一是对MyApplication类实现了单例化模式,便于在没有继承Activity的类里面调用
调用:
MyApplication app = MyApplication.getInstance();
二是对于传输多组数据,使用了HashMap
private HashMap<String, Object> map=new HashMap<String, Object>();
结果图:
activityGlobelVariable.MyApplication
1 package activityGlobelVariable;
2
3 import java.util.HashMap;
4
5 import android.app.Application;
6
7 public class MyApplication extends Application{
8
9
10 //也可以用hashMap来代替这些私有变量
11 private HashMap<String, Object> map=new HashMap<String, Object>(); 12
13
14 private String name;
15 private int age;
16
17
18
19
20
21 public HashMap<String, Object> getMap() {
22 return map;
23 }
24
25 public void setMap(HashMap<String, Object> map) {
26 this.map = map;
27 }
28
29
30
31
32
33
34
35
36
37
38
39 private static MyApplication instance=null; 40 41 public static MyApplication getInstance(){ 42 return instance; 43 } 44
45 public String getName() {
46 return name;
47 }
48
49
50
51 public void setName(String name) {
52 this.name = name;
53 }
54
55
56
57
58 public int getAge() {
59 return age;
60 }
61
62
63
64 public void setAge(int age) {
65 this.age = age;
66 }
67
68
69
70
71 public MyApplication() {
72 super();
73 }
74
75
76
77 public MyApplication(String name, int age) {
78 super();
79 this.name = name;
80 this.age = age;
81 }
82
83
84
85 @Override
86 public void onCreate() { 87 // TODO Auto-generated method stub 88 super.onCreate(); 89 this.instance=this; 90 } 91
92
93
94
95
96
97
98
99
100
101
102 @Override
103 public String toString() {
104 return "MyApplication [name=" + name + ", age=" + age + "]";
105 }
106
107
108
109
110 }
activityGlobelVariable.MainActivity
1 package activityGlobelVariable;
2
3
4
5
6 import com.example.activityGlobelVariable.R;
7
8 import android.app.Activity;
9 import android.content.Intent;
10 import android.os.Bundle;
11 import android.view.View;
12 import android.view.View.OnClickListener;
13 import android.widget.Button;
14
15
16
17 public class MainActivity extends Activity{
18 private Button btn_openActivty;//创建一个button对象
19 MyApplication app = MyApplication.getInstance(); 20 protected void onCreate(Bundle savedInstanceState) {
21 super.onCreate(savedInstanceState);//父类操作
22 setContentView(R.layout.activity_main);//引入名为activity_main的界面
23 btn_openActivty=(Button) findViewById(R.id.btn_openActivity);//找id为btn_openActivity的button
24 btn_openActivty.setOnClickListener(new OnClickListener() {//设置button点击监听
25
26 @Override
27 public void onClick(View v) {//