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

两个没有直接关系的activity之间怎么进行数据传递即application的作用及用法

2015-01-26 19:53 836 查看
有时候,两个页面之间没有跳转关系,但是这两页面之间却需要传递一些数据,甚至说某个页面获得的数据要被之后的很多页面拿来使用,这个时候就需要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、


这样就可以运行了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: