有时候,两个页面之间没有跳转关系,但是这两页面之间却需要传递一些数据,甚至说某个页面获得的数据要被之后的很多页面拿来使用,这个时候就需要applicaiton。
application是与应用程序的生命周期一致的,即只要应用程序不关掉,他就会存活。只有应用程序退出了它才会给销毁。
下面以一个例子说明怎么使用。
例子需求:MainActivity将String字符串和int的数值传递到ResultActivity
application传值的步骤:
1.创建Applicaiton的子类 将需要进行传递的数据作为application的属性
2.源Activity中获取application对象 进行存储属性值 设置属性值
3.目标Activity中获取application对象 获取设置的属性值
4.在AndroidAmifest.xml文件中注册applicaiton
<application
android:name="com.qianfeng.activitypassvalue.MyApplication">
</application>
1、创建application子类
public class MyApplication extends Application {
private String str;
private int myInt;
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
public int getMyInt() {
return myInt;
}
public void setMyInt(int myInt) {
this.myInt = myInt;
}
}
2、
public class MainActivity extends Activity {
private Button button;
private MyApplication mapp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button) findViewById(R.id.button1);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//返回当前activity的applicaiton对象
mapp=(MyApplication) getApplication();
mapp.setStr("凤姐");
mapp.setMyInt(38);
Intent intent=new Intent(MainActivity.this,ResultActivity.class);
startActivity(intent);
}
});
}
3、
public class ResultActivity extends Activity {
private TextView tv;
private MyApplication mapp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_result);
tv=(TextView) findViewById(R.id.textView1);
//获取当前activity中的appplication对象 并且获取其中设置的属性的值
mapp=(MyApplication) getApplication();
String str=mapp.getStr();
int i=mapp.getMyInt();
tv.setText("str="+str+",int="+i);
}
}
4、
这样就可以运行了。