Android ARouter 传值 传bean 失效问题解决

在使用ARouter进行Android路由时遇到Bean传递失败的问题。解决方法是确保Bean具有空参数构造器并实现序列化,同时接收端属性名需与传值键一致。添加相关依赖并正确配置ARouter。

最近在用阿里巴巴的路由 ARouter的时候,遇到传递多个值和bean的过程中,无法把bean 传递过去, 当时检查的时候,没有发现问题,但是为什么就是传值不过去,后来 发现 当你传递多个值,特别是bean的时候,这个bean首先要序列化,然后,要有一个空参构造,这样传值过去,才可以

  例如以下代码;

ARouter.getInstance().build(ARouterPath.XXX_ACTIVITY).withInt("XXXId",getV().getXXXId()).withString("name",
        getV().getXXXName()).withString("issue", issue)
        .withString("name",getV().getName())
        .withString("xxx","0.00").withBoolean("xxx",true)
        .withParcelable("data",bean)
        .navigation();

Bean 的写法 ,一定要自己写上他的空参构造

public class TestDemo implements Parcelable {

    private String methodId;

    public String getMethodId() {
        return methodId;
    }


    public void setMethodId(String methodId) {
        this.methodId = methodId;
    }
    


    public TestDemo() {
    }


    @Override
    public int describeContents() {
        return 0;
    }


    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(this.methodId);
    }


    protected TestDemo(Parcel in) {
        this.methodId = in.readString();
    }


    public static final Creator<TestDemo> CREATOR = new Creator<TestDemo>() {
        @Override
        public TestDemo createFromParcel(Parcel source) {
            return new TestDemo(source);
        }


        @Override
        public TestDemo[] newArray(int size) {
            return new TestDemo[size];
        }
    };
}

在接收的Activity 里面这样写;

@Autowired
int XXXId;
@Autowired
String name;
@Autowired
TestDemo data;
@Autowired
String issue;
@Autowired
String name;
@Autowired
boolean xxx;

 这里的属性的命名必须和传值的key的名字是一样的,否则收不到值.

 

扩展;  阿里路由的用法;

    1. kapt 'com.alibaba:arouter-compiler:1.2.1'  添加依赖

    2. "arouter-api" : 'com.alibaba:arouter-api:1.4.0',添加依赖

    3. apply plugin: 'com.alibaba.arouter' //把它放在 build.gradle 最上面

    4. kapt {arguments {arg("AROUTER_MODULE_NAME", project.getName())}  在Android{} 中加入

    5. 工程项目中配置 classpath "com.alibaba:arouter-register:1.0.2"

    6. public static final String GROUP_CHILD = "/child/"; public static final String MAIN_ACTIVITY = GROUP_CHILD + "MainActivity";

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值