事先生成自己的实体类Entity_Test,并赋值 拿到Entity_Test实例 mdata。
1.传的界面
//开始传值
ARouter.getInstance().build(AllPath_TEST).withObject("data", mdata).navigation();
2.在收的界面
@Route(path = AllPath.TEST) public class Activity_TestActivity extends BaseActivity { private TextView tv_textview; @Autowired(name = "data")//key Entity_Test getdata;//接收值 @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_test01); Log.e("我的测试数据",getdata.getData().get(1).getAnalysis()+""); } }
到这里 你会拿不到值 ,或者闪退,你需要生成一个类,类名自己定义,实现SerializationService接口
//我用的是 Gson 所以生成后是这样的
@Route(path = "/service/json")//这里必须这样写,ARouter在你穿Object的时候会自己使用这个类,我们只管生成这个类
//因为实现了ARouter的SerializationService接口,我们自定义的对象即可不用写代码序列化而直接使用
public class been_impl implements SerializationService {
Gson mGson;
private void check(){
if (mGson==null) {
mGson = new Gson();
}
}
@Override
public <T> T json2Object(String input, Class<T> clazz) {
check();
return mGson.fromJson(input, clazz);
}
@Override
public String object2Json(Object instance) {
check();
return mGson.toJson(instance);
}
@Override
public <T> T parseObject(String input, Type clazz) {
check();
return mGson.fromJson(input, clazz);
}
@Override
public void init(Context context) {
check();
}
}
最後 需要 在你的实体类里,对所有层级的对象提供一个构造方法
我的Entity_Test内 还嵌套了一层对象 DataBean ,内部的嵌套的对象 也需要提供 其构造方法
最后的最后,实体类里的成员变量的方法名 必须是public
这样 你就可以拿到值了