在ARouter的github上,最初还以为是实现SerializationService这个类,其实不是。是单独写一个类实现它,代码如下:

/** * Author: meizivskai * Time: 2020-01-01 * Description: This is JsonServiceImpl */@Route(path = "/service/json")public class JsonServiceImpl implements SerializationService {    @Override    public void init(Context context) {    }    @Override    public  T json2Object(String text, Class clazz) {        return JSON.parseObject(text, clazz);    }    @Override    public String object2Json(Object instance) {        return JSON.toJSONString(instance);    }    @Override    public  T parseObject(String input, Type clazz) {        return JSON.parseObject(input, clazz);    }}

自定义的实体,不能序列化,否则取不到值。我的自定义对象:

/** * Author: meizivskai * Time: 2019-12-12 * Description: This is TrueFalse */public class TrueFalse {    public int mQuestion;    public boolean mTrueQuestion;    public TrueFalse() {    }    public TrueFalse(int question, boolean trueQuestion) {        this.mQuestion = question;        this.mTrueQuestion = trueQuestion;    }    public int getmQuestion() {        return mQuestion;    }    public TrueFalse setmQuestion(int mQuestion) {        this.mQuestion = mQuestion;        return this;    }    public boolean ismTrueQuestion() {        return mTrueQuestion;    }    public TrueFalse setmTrueQuestion(boolean mTrueQuestion) {        this.mTrueQuestion = mTrueQuestion;        return this;    }    @Override    public String toString() {        return "TrueFalse{" +                "mQuestion=" + mQuestion +                ", mTrueQuestion=" + mTrueQuestion +                '}';    }}

需要注意的是实体中,要写无参的构造方法,属性是公开权限public。

点击跳转:

mFalseButton.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {        final TrueFalse trueFalse = new TrueFalse(100, false);        ARouter.getInstance().build(Constant.PATH_SECOND)                .withObject("trueFalse", trueFalse)                .navigation(MainActivity.this, new NavigationCallback() {                    @Override                    public void onFound(Postcard postcard) {                        Log.e("router", "onFound: " + postcard.getPath());                    }                    @Override                    public void onLost(Postcard postcard) {                        Log.e("router", "onLost: " + postcard.getPath());                    }                    @Override                    public void onArrival(Postcard postcard) {                        Log.e("router", "onArrival: " + postcard.getPath());                    }                    @Override                    public void onInterrupt(Postcard postcard) {                        Log.e("router", "onInterrupt: " + postcard.getPath());                    }                });    }});

界面接受值:

/** * Author: meizivskai * Time: 2020-01-01 * Description: This is FirstActivity */@Route(path = Constant.PATH_SECOND)public class SecondActivity extends BaseActivity {    @Autowired    TrueFalse trueFalse;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_second);        Log.e("router", "onCreate: " + trueFalse);    }}

BaseActivity里面要注入下:

/** * Author: meizivskai * Time: 2020-01-01 * Description: This is BaseActivity */public class BaseActivity extends AppCompatActivity {    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        ARouter.getInstance().inject(this);    }}

结果就可以取到值了:

 

终结下:

1.实体中成员变量最好写成public

2.实体要写无参的构造方法

3.实体不能被序列化

4.写一个实现了SerializationService的类

更多相关文章

  1. 在MAC OS下设置ANDROID_HOME
  2. Android动态改变工程依赖
  3. 初识Android上层应用5大基本组件
  4. android Activity 清空焦点
  5. android中常用的方法备忘
  6. android中使用DisplayMetrics获取屏幕参数
  7. Android(安卓)AsyncTask 完美解析 看不懂源码你就输了
  8. Android(安卓)textview获取选中的内容
  9. android webview快速获取页面上的图片

随机推荐

  1. Android(安卓)Geofence的学习(三)总结、Dem
  2. 移动Android开发-规范文档
  3. android 关于appcompat v7出错问题与解决
  4. Android中的AIDL
  5. Android自动解除系统锁屏
  6. android进程间服务通信示例
  7. Android(安卓)Activity之间跳转与传值
  8. Android 实现记住用户名和密码的功能
  9. 在Linux下安装Android SDK
  10. adb logcat命令查看并过滤android输出log