中文wiki. 方便的话给个star!❤️
- Add router gradle plugin to your project-level
build.gradle, as shown below.
buildscript {
repositories {
google()
mavenCentral()
// jcenter() // deprecated
}
dependencies {
classpath 'com.android.tools.build:gradle:+'
classpath "com.chenenyu.router:gradle-plugin:x.y.z"
}
}latest router-gradle-plugin version:
- Apply router plugin in your module-level 'build.gradle'.
apply plugin: 'com.android.application'// apply plugin: 'com.android.library'
apply plugin: 'com.chenenyu.router'注意: 在rootProject的build.gradle文件中, 可以指定插件引用的library版本.
ext {
routerVersion ='x.y.z'
compilerVersion ='x.y.z'
compilerLoggable =true/false // 打开/关闭编译期log
}- 添加拦截器(可选)
@Interceptor("SampleInterceptor")
publicclassSampleInterceptorimplementsRouteInterceptor {
@OverridepublicRouteResponseintercept(Chainchain) {
// do somethingreturnchain.process();
}
}- 添加注解
// 给Activity添加注解,指定了路径和拦截器(可选)@Route(value = "test", interceptors = "SampleInterceptor")
publicclassTestActivityextendsAppCompatActivity {
@InjectParam(key="foo") // 参数映射Stringfoo;
@OverrideprotectedvoidonCreate(BundlesavedInstanceState) {
super.onCreate(savedInstanceState);
Router.injectParams(this); // 自动从bundle中获取并注入参数
...
}
}
// 给Fragment添加注解@Route("test")
publicclassTestFragmentextendsFragment {
...
}- 跳转
// 简单跳转Router.build("test").go(this);
// startActivityForResultRouter.build("test").requestCode(0).go(this);
// 携带bundle参数Router.build("test").with("key", Object).go(this);
// 添加回调Router.build("test").go(this, newRouteCallback() {
@Overridepublicvoidcallback(RouteStatusstatus, Uriuri, Stringmessage) {
// do something
}
});
// 获取路由对应的intentRouter.build("test").getIntent();
// 获取注解的FragmentRouter.build("test").getFragment();建议浏览 wiki.
QQ group: 271849001
