当我们定义了一个全局变量时,启动Application时,系统会创建一个PID,即进程ID,所有的Activity就会在此进程上运行。那么我们在Application创建的 时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值, 那么在同一个应用的其他Activity中值就会改变。
1、定义全局变量要继承Application,可以写一个global类,可定义多个全局变量。
package com.example.globaldemo;
import java.util.HashMap;
import android.app.Application;
/**
* 定义全局变量
* @author nsc
*
*/
public class Global extends Application {
private HashMap<String, Object> map = new HashMap<String, Object>();
//发送的方法
public void put(String key,Object object){
map.put(key, object);
}
//获取数据方法
public Object get(String key){
return map.get(key);
}
}
2、需要在AndroidManifest.xml中加上android:name=".Global"
3、在需要使用发送信息的地方加上
//发送信息
Global app = (Global) getApplication();
app.put("key", "MainActivity 信息");//要传递的信息
接收信息:
Global app = (Global) getApplication();
String value = (String) app.get("key");//value接收的信息
简单实现代码,两个Activity之间传递数据:MainActivity.java
package com.example.globaldemo;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
private Button button;
private TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initUI();
}
private void initUI() {
text = (TextView)findViewById(R.id.text);
// TODO Auto-generated method stub
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//发送信息
Global app = (Global) getApplication();
app.put("key", "MainActivity 信息");//要传递的信息
Intent intent = new Intent(MainActivity.this,Other.class);
startActivity(intent);
}
});
//接收other.java信息
Global app = (Global) getApplication();
String value = (String) app.get("key");//value接收的信息
text.setText("MainActivity 接收到的信息:"+value);
}
}
Other.java代码
package com.example.globaldemo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class Other extends Activity {
private TextView other;
private Button button;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
initUI();
}
private void initUI() {
// TODO Auto-generated method stub
/******接收****/
Global app = (Global) getApplication();
String value = (String) app.get("key");//value接收的信息
other = (TextView)findViewById(R.id.other);
other.setText("other 接收到的信息:"+value);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
//发送信息
Global app = (Global) getApplication();
app.put("key", "Other 信息");//要传递的信息
Intent intent = new Intent(Other.this,MainActivity.class);
startActivity(intent);
}
});
}
}