转载请注明:http://blog.csdn.net/ly20116/article/details/50970840

一、使用Intent传递数据
1、传递简单数据
传递简单数据,如8种基本数据类型和String 都可以,通过Intent.putExtra()方法传递

FirstActivity中发送:

Intent intent=new Intent(FirstActivity.this,SecondActivity.class);intent.putExtra("name", "value");intent.putExtra("id", 1);startActivity(intent);

SecondActivity中获取:

String name=getIntent().getStringExtra("name");int id=getIntent().getIntExtra("id", 0);//后一个参数为默认值

2、传递复杂数据
传递较复杂的数据,可以通过Bundle对象。既可以传递简单数据,也可传递数组或者链表等。

Intent intent=new Intent(FirstActivity.this,SecondActivity.class);Bundle bundle=new Bundle();bundle.putFloat("float", 0.4f);String[] s={"aaaa","bbb"};bundle.putStringArray("string",s );intent.putExtras(bundle);startActivity(intent);

3、传递自定义对象
传递自定义的对象时,要将类序列化(实现Serializable接口或Parcelable接口)。Serializable接口是Java提供的,使用比较简单,性能低;Parcelable接口是Android提供的,使用稍复杂,但性能高。
(1)自定义定义类实现Serializable接口

public class User implements Serializable {    private String name;    private int age;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public User(String name,int age){        this.name=name;        this.age=age;    }}

FirstActivity发送

Intent intent=new Intent(FirstActivity.this,SecondActivity.class);User user=new User("name",0);intent.putExtra("user", user);startActivity(intent);

SecondActivity获取对象

User user=(User)getIntent().getSerializableExtra("user");

(2)定义类实现Parcelable接口,实现相应的方法

public class User implements Parcelable{    private String name;    private int age;    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public User(String name,int age){        this.name=name;        this.age=age;    }    /** * Parcel对象为参数的构造函数 * @param source */    public User(Parcel source){        this.name=source.readString();        this.age=source.readInt();    }    @Override    public int describeContents() {        // TODO Auto-generated method stub        return 0;    }    @Override    public void writeToParcel(Parcel dest, int flags) {        // 将对象映射成Parcel对象,把每个属性写入Parcel,按照写的顺序读出来        dest.writeString(name);        dest.writeInt(age);    }    /** * 将Parcel容器的数据转化为对象数据 */    public static final Creator<User> CREATOR=new Creator<User>() {        @Override        public User[] newArray(int size) {            // 返回对象数据的大小            return new User[size];        }        @Override        public User createFromParcel(Parcel source) {            // 从Parcel中取出数据进行转换,按照写的顺序读出来            return new User(source);        }    };

FirstActivity发送:

Intent intent=new Intent(FirstActivity.this,SecondActivity.class);User user=new User("name",0);intent.putExtra("user", user);startActivity(intent);

SecondActivity获取:

User user=(User)getIntent().getParcelableExtra("user");

4、获取返回参数
FirstActivity中获取SecondActivity的返回值是StartActivityForResult()方法,同时实现onActivityResult(int requestCode, int resultCode, Intent data)方法

FirstActivity中发送:

private static final int requestCode=0x11;//请求码Intent intent=new Intent(FirstActivity.this,SecondActivity.class);startActivityForResult(intent, requestCode);

SecondActivity中设置,(也可以不设置)

int resultCode=0x22;//结果码,可设置不同的结果码,让FirstActivity根据结果码的不同来解决问题Intent intent=new Intent();intent.putExtra("data", "stringValue");setResult(resultCode, intent);

当SecondActivity结束或者销毁时,会返回FirstActivity,调用OnActivityResult()方法:

@Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        // TODO Auto-generated method stub        super.onActivityResult(requestCode, resultCode, data);        switch(requestCode){//即可以判断requestCode也可以判断resultCode,根据值得不同进行对应的操作。        case 0x11:            //进行一些操作            String value=data.getStringExtra("data");            break;        }    }

更多相关文章

  1. “罗永浩抖音首秀”销售数据的可视化大屏是怎么做出来的呢?
  2. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  3. 不吹不黑!GitHub 上帮助人们学习编码的 12 个资源,错过血亏...
  4. Android图片内存优化的几点心得
  5. ConnectivityService分析
  6. android学生管理系统,利用linerLayout,实现xml的读取和写入,以及按
  7. Android(安卓)ListView 获取网络上的数据,动态地进行数据更新!
  8. Android(安卓)HIDL基础篇(一)
  9. Android一些好用的类或方法

随机推荐

  1. Android(安卓)冷门知识点汇总:你知道哪些A
  2. android之MVC
  3. android 代码生成布局
  4. 深入解析Android中View的工作原理
  5. 无需 root 实现在 Android 设备上运行 Li
  6. StevGuo系列文章翻译之Android内存泄漏检
  7. android 环境下使用cocos2d-x的环境配置
  8. Android上使用libgdx
  9. 详解Android核心模块及相关技术
  10. RN-修改安卓项目名字