最近在用阿里巴巴的路由 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的名字是一样的,否则收不到值.
扩展; 阿里路由的用法;
-
-
kapt 'com.alibaba:arouter-compiler:1.2.1' 添加依赖
-
"arouter-api" : 'com.alibaba:arouter-api:1.4.0',添加依赖
-
apply plugin: 'com.alibaba.arouter' //把它放在 build.gradle 最上面
-
kapt {arguments {arg("AROUTER_MODULE_NAME", project.getName())} 在Android{} 中加入
-
工程项目中配置 classpath "com.alibaba:arouter-register:1.0.2"
-
public static final String GROUP_CHILD = "/child/"; public static final String MAIN_ACTIVITY = GROUP_CHILD + "MainActivity";
-

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

被折叠的 条评论
为什么被折叠?



