参考:
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());
}
});
以上就是一般的简单用法,做个备忘,至于拦截等实际项目要用到的,到时候再看吧~~~