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

android学习之不同activity之间传递数据

2013-10-19 17:07 483 查看
这几天再写android应用程序中用到了不同的activity之间来传递数据的intent,下面介绍几种我用过的传递方法,算是总结吧

1、intent跳转的时候传递

假设由activity1跳向activity2,Activity1的代码如下:

Intent intent = new Intent(Activity1.class,Activity2.class);

String data = "value";

//通过在intent的put方法传递值.用法跟map差不多

intent,putExtra("data",data);

startActivity(intent);

Activity2的相关代码如下:

Intent intent = getIntent();

String data = (String) intent.getExtra("data");

注意如果传递的是HashMap,Arraylist等序列化的数据则为

Intent intent = getIntent();

map = (HashMap<String, Object>) intent.getSerializableExtra("map");

2、Activity1跳转到Activity2,Activity2关闭的时候往Activity1回传数据

Activity1中的代码如下:

//跳转代码

Intent intent = new Intent(Activity1.class,Activity2.class);

startActivityForResult(intent,3);//3为请求码,用于区分是谁请求

同时Activity1还要实现onActivityResult()方法,这个方法是处理回传的数据时使用的,代码如下

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent resultData) {

//requestCode为请求码,判断是谁请求的,本例中若为3则是Activity1中的请求,resultCode,结果的代码,例如结果为1则刷新Activity1,结果为2不刷新,

//data为传递回来的数据

super.onActivityResult(requestCode, resultCode, resultData);

//do sth

}

3、采用全局变量Application,这个需要继承Application类

首先新建一个类如下:

public class MyApplication extends Application{

private String deliverId;//运输单号

/**

* 获得运输单号

* @return 运输单号

*/

public String getDeliverId() {

return deliverId;

}

/**

* 设置运输单号

* @param deliverId

*/

public void setDeliverId(String deliverId) {

this.deliverId = deliverId;

}

}

然后在需要设置全局变量的地方使用如下代码:

String deliverId="1"

((MyApplication)getApplicationContext()).setDeliverId(deliverId);

需要获得这个全局变量的地方使用如下代码

String deliverId = ((MyApplication)getApplicationContext()).getDeliverId();

4、使用SharedPreferences,将数据持久化

获得SharedPreferences的代码如下:

SharedPreferences sp = this.getSharedPreferences("config.txt", Context.MODE_PRIVATE);

this指的是当前的activity,config.txt是存储数据所使用的文件,没有的话会新建一个,它采用xml的格式存储,

Context.MODE_PRIVATE指的是私有的只有本程序能够访问修改

假设往往里面写入数据,使用的代码如下:

// 得到sharedpreference的编辑器

Editor editor = sp.edit();

editor.putString("user", user);

editor.putString("pwd", pwd);

editor.putBoolean("issetup", false);

// 清空编辑器里面的内容

// editor.clear();

// 非常重要,最后一定要提交

editor.commit();

获得里面的数据使用的方法是:

SharedPreferences sp = this.getSharedPreferences("config.txt", Context.MODE_PRIVATE);

boolean issetup = sp.getBoolean("issetup", false);

String user = sp.getString("user", "");

String pwd = sp.getString("pwd", "");

getString的第二个参数的含义是如果是null采用第二个参数代替

最后,还可以将数据存在数据库中,采用内容提供者等方法存储和传递数据,这个以后再学习使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: