ARouter使用

参考:
https://github.com/alibaba/ARouter
http://blog.csdn.net/u013762572/article/details/77150769

1、环境配置

2、application中初始化

if (isDebug()) {           // 这两行必须写在init之前,否则这些配置在init过程中将无效
    ARouter.openLog();     // 打印日志
    ARouter.openDebug();   // 开启调试模式(如果在InstantRun模式下运行,必须开启调试模式!线上版本需要关闭,否则有安全风险)
}
ARouter.init(mApplication); // 尽可能早,推荐在Application中初始化

3、添加注解

  • 在支持路由的页面上添加注解(必选)
  • 这里的路径需要注意的是至少需要有两级,/xx/xx,这里的xx是自定义的,保持一致就行
@Route(path = "/test/activity")
public class YourActivity extend Activity {
    ...
}
跳转到上面的activity
ARouter.getInstance().build("/test/activity").navigation();

3、发起路由操作并解析

  • build后的注解内容就是添加注解时定义的两级目录
// 1. 应用内简单的跳转
ARouter.getInstance().build("/test/activity").navigation();
  • 页面传值
// 跳转并携带参数
 ARouter.getInstance().
                build("/simple/simpledata").
                withString("name","zhangsan").
                withInt("age",18).
                withParcelable("test",new TestParcelable("Tom",12)).
                navigation();
//目标页面解析参数  
@Route(path = "/simple/simpledata")
public class SimpleDataActivity extends AppCompatActivity {

    TextView tv ;

    @Autowired()
    String name ;

    @Autowired(name = "age")
    int age ;

    @Autowired
    TestParcelable test ;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_simple_data);

        //使用ARouter.getInstance().inject(this);方法来inject来初始化@Autowired注解的字段。
        ARouter.getInstance().inject(this);

        tv = (TextView) findViewById(R.id.id_tv);
        tv.setText("name:" + name +",age:" + age  + ",test:"+test);
    }
}
  • 页面跳转startActivityForResult
  ARouter.getInstance()
                        .build("/test/activity2")
                        .navigation(this, 666);
 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        switch (requestCode) {
            case 666:
                Log.e("activityResult", String.valueOf(resultCode));
                break;
            default:
                break;
        }
    }

3、路由结果

ARouter.getInstance().build("/test/simple_interceptor").navigation(this, new NavCallback() {
            @Override
            public void onArrival(Postcard postcard) {  //路由到达之后调用
                Log.d("MainActivity" , "onArrival : " + postcard.getPath());
            }

            @Override
            public void onInterrupt(Postcard postcard) {  //路由被拦截时调用
                Log.d("MainActivity" , "onInterrupt : " + postcard.getPath());
            }

            @Override
            public void onLost(Postcard postcard) {   //路由被丢失时调用
                Log.d("MainActivity" , "onLost : " + postcard.getPath());
            }

            @Override
            public void onFound(Postcard postcard) {  //路由目标被发现时调用
                Log.d("MainActivity" , "onLost : " + postcard.getPath());
            }
        });

以上就是一般的简单用法,做个备忘,至于拦截等实际项目要用到的,到时候再看吧~~~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值