Activity之间数据的简单传递

今天我们一起来看一下Activity之间的数据传递。

先说说有哪些方式可以实现呢?其实吧,Activity之间的数据传递,标准的传递方式是使用Intent载体;还有很多其他方式,那个范围就扩大了,那些应该叫做数据传递,并不一定要是Activity之间的数据传递,比如说:静态变量(用public static修饰),数据存储(sharedpreference、provider等),进程间通讯(AIDL)等等。我在这里只是讲讲Activity之间的数据传递,至于其他的我后续的blog有空再讲。

Intent的基本使用方式:Intent.put(key,value);然后在对应的activity里面Intent.getxxx(key)相应的类型即可。

//ActivityA中调用
private void startNewActivity1() {
        Intent mIntent = new Intent();
        mIntent.setClass(ActivityA.this, ActivityB.class);
        mIntent.putExtra(INTENT_STRING_TAG, "testString");
        mIntent.putExtra(INTENT_SERIALIZABLE_TAG, object);
        startActivity(mIntent);
}

//ActivityB中调用
private void handleIntent(){
        Intent mIntent = getIntent();
        System.out.println(ActivityA.INTENT_STRING_TAG + " = " + mIntent.getStringExtra(ActivityA.INTENT_STRING_TAG));
}

这里还有很多朋友想问Bundle不是也能做载体么?这个是没有任何问题的,他的用法和Intent的是一样的,但是最后它还是需要被放在Intent被传递过去的。ActivityA中创建一个Bundle对象,然后 bundle.putXXX(key, value); intent.putExtras(bundle);ActivityB中就需要Bundle bundle = intent.getExtras();来获取传递过来的bundle

基本的数据传递还是比较简单的,这边有一点需要注意的是,开发过程中往往需要用到一些自定义对象的传递,那么这个自定义对象是不能直接被Intent传递的。其实解决方法很简单,你只需要将这个对象声明为序列化对象即可。(即实现Serializable或Parcelable接口就可以了)
package com.solide.object;

import java.io.Serializable;

public class TestObject implements Serializable {

    private static final long serialVersionUID = 1L;

    private int testInt = 1;

    private String testString = "test";

    public int getTestInt() {
        return testInt;
    }

    public void setTestInt(int testInt) {
        this.testInt = testInt;
    }

    public String getTestString() {
        return testString;
    }

    public void setTestString(String testString) {
        this.testString = testString;
    }

}

上面讲诉的是A到B的数据传递,其实还可以A从B索取结果,使用的方法是startActivityForResult();





附上DEMO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值