Activity的传值的几种方式
来源:互联网 发布:php生成8位唯一邀请码 编辑:程序博客网 时间:2024/06/05 07:22
开发过程中页面和页面之间传递数据示最长遇到的。下面我们来研究下activity之间传递数据的几种方式.
1、通过application实现传递数据
2、activity之间的回传值(startActivityForResult())
3、用intent进行传值
一、通过application实现传递数据
BaseApplication中
public class BaseApplication extends Application{
private static final String tag="BaseApplication";
private static BaseApplication mInstance;
public List<String> pathlist = new ArrayList<String>();
@Override
public void onCreate() {
LogUtil.i(tag, "----------onCreate:");
super.onCreate();
mInstance = this;
//initCrashHandle();
}
public static BaseApplication getInstance() {
return mInstance;
}
}
放值进BaseApplication:
private ArrayList<ImageItem> dataList;
BaseApplication application = BaseApplication.getInstance();
application.dataList = dataList;
从BaseApplication中取值:
private ArrayList<ImageItem> dataList;
BaseApplication application = BaseApplication.getInstance();
dataList = application.dataList;
二、使用startActivityForResult()进行回传值
跳转的时候用
Intent intentC = new Intent(this, BActivity.class);
/**
* 跳转目标Activity,并获取返回值
* 第一个参数:意图对象,包含所需要跳转的Activity
* 第二个参数:请求值
*/
startActivityForResult(intentC, REQUEST_CODE_TO_C);
BActivity中适当的时候设置setResult()
Intent resultIntent = new Intent();
resultIntent.putExtra("resutlt", result);
//第一个参数示返回码,第二个参数示intent
setResult(1, resultIntent);
原activity中取数据/做相应的操作
/**
* 在此方法中接受目标Activity返回的值,并进行相应的处理
* 第一个参数:请求码
* 第二个参数:结果码
* 第三个参数:目标Activity返回的Intent对象
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
android.util.Log.e("MainActivity", "onActivityResult");
if (requestCode == REQUEST_CODE_TO_B) {
if (resultCode == 1) {
String content = data.getStringExtra("message");
TextView textView = (TextView) findViewById(R.id.text_Main);
textView.setText("content is : " + content);
} else if(resultCode == -1){
TextView textView = (TextView) findViewById(R.id.text_Main);
textView.setText("content is : " + " 有可能你的请求参数有错误");
}
} else if(requestCode == REQUEST_CODE_TO_C){
if(resultCode == -1){
TextView textView = (TextView) findViewById(R.id.text_Main);
textView.setText("content is : " + "参数有问题");
} else if (resultCode == 1){
String content = data.getStringExtra("msg");
TextView textView = (TextView) findViewById(R.id.text_Main);
textView.setText("content is : " + content);
}
}
}
三、用intent进行传值
intent可以传递5中基本数据类型、Bundle类型、Serialiable对象、Parcrlable对象
intent传递Serialiable对象:
Intent intentD = new Intent(this, DActivity.class);
Bundle bun = new Bundle();
Person p = new Person("jack", 20);
bun.putSerializable(PERSON, p);
intentD.putExtras(bun);
startActivity(intentD);
接收Serialiable对象:
Person p = (Person) getIntent().getExtras().getSerializable(MainActivity.PERSON);
String name = p.name;
int age = p.age;
注:Person类及其中的子类必须实现Serialiable接口,
import java.io.Serializable;
public class Person implements Serializable{
public String name = "";
public int age = 0;
public Person(String name, int age){
this.name = name;
this.age = age;
}
}
Intent传递Parcelable对象
Parcelable序列化了的POJO类:
Parcelable序列化Parcelable序列化需要注意的是,需要重载describeContents()、writeToParcel(Parcel dest, int flags)、Parcelable.Creator<Model> CREATOR = new Parcelable.Creator<Model>()这三个方法。
Parcelable数据传递代码:
Parcelable接收数据代码:
- Activity传值的几种方式
- Activity的传值的几种方式
- Activity的几种跳转及传值方式详解
- Activity 之间传值的几种方式
- Intent在Activity之间传值的几种方式
- Activity的几种启动方式
- android启动activity的几种方式
- android Activity 的几种跳转方式
- android启动activity的几种方式
- Activity的几种跳转方式
- 几种Activity的跳转方式
- Activity退出的几种方式
- 几种退出 Activity 的方式
- Activity退出的几种方式
- Activity跳转的几种方式
- 设置Activity全屏的几种方式
- 获取当前Activity的几种方式
- android activity的关闭处理的几种方式
- Struts2框架自学之路——拦截器
- 解决VS2015安装后stdio.h ucrtd.lib等文件无法识别问题,即include+lib环境变量配置
- 基于DB的全局唯一id
- 表达式
- 算法实战:根据Key或Value对Map进行排序及其应用
- Activity的传值的几种方式
- java生成验证码
- 如何在地图上打点数百万条数据
- 【算法题】链表冒泡排序
- mr中的combiner
- 内存监视
- Cookie应用:显示上次访问页面时间
- bzoj 4278: [ONTAK2015]Tasowanie&bzoj 1692: [Usaco2007 Dec]队列变换 后缀数组+贪心
- POJ3276-Face The Right Way