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采用第二个参数代替
最后,还可以将数据存在数据库中,采用内容提供者等方法存储和传递数据,这个以后再学习使用。
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采用第二个参数代替
最后,还可以将数据存在数据库中,采用内容提供者等方法存储和传递数据,这个以后再学习使用。
相关文章推荐
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- Android——不同activity之间数据传递
- Android:不同Activity之间的数据传递 (简单的demo)
- Activity之间的数据传递-android学习之旅(四十七)
- 【Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用】的改进!
- Activity之间的数据传递-android学习之旅(四十七)
- Android之在不同的Activity之间传递数据
- Android——不同activity之间数据传递
- Activity之间的数据传递-android学习之旅(四十七)
- Android 学习之路 1:如何在Activity之间传递数据
- Android笔记三.不同Activity之间的传递数据(Bundle对象的使用)
- Android之不同Activity之间的数据传递
- Android 学习之路一:Activity之间传递数据的四种方式
- 2014-10-25Android学习--------activity之间批量传递数据----Bundle类的实现
- Android之不同Activity之间的数据传递
- Android判断网络状态是否断开+Android完全关闭应用程序+ 本文讲述了Android中不同Activity之间的数据传递 — Bundle对象的实现(-)+Android中Bundle的使用示例
- 通过intent、ClipboardManager在android不同activity之间传递数据
- [android] 在不同的activity之间传递数据
- 【Android】利用Bundle在不同Activity之间传递数据
- Android学习【2】Activity之间通过Application进行数据传递