Skip to content

chenenyu/Router

Folders and files

NameName
Last commit message
Last commit date

Latest commit

6571553 · Jul 5, 2022
Jun 22, 2022
Oct 28, 2021
Jun 22, 2022
Nov 10, 2021
Jun 29, 2022
Jun 22, 2022
Nov 13, 2021
Apr 20, 2021
Apr 29, 2020
May 23, 2019
Jun 17, 2019
Apr 20, 2021
Jun 22, 2022
Jun 29, 2022
Jun 12, 2017
Jan 12, 2017
Nov 13, 2021
Mar 7, 2019

Repository files navigation

Build Status license PullRequest

Router

中文wiki. 方便的话给个star!❤️

screenshot

Getting started

  • 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: maven

  • 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
}

latest router version: maven

latest compiler version: maven

基本用法

  • 添加拦截器(可选)
@Interceptor("SampleInterceptor")
public class SampleInterceptor implements RouteInterceptor {
    @Override
    public RouteResponse intercept(Chain chain) {
        // do something
        return chain.process();
    }
}
  • 添加注解
// 给Activity添加注解,指定了路径和拦截器(可选)
@Route(value = "test", interceptors = "SampleInterceptor")
public class TestActivity extends AppCompatActivity {
    @InjectParam(key="foo") // 参数映射
    String foo;
  
     @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Router.injectParams(this);  // 自动从bundle中获取并注入参数
        ...
    }
}

// 给Fragment添加注解
@Route("test")
public class TestFragment extends Fragment {
    ...
}
  • 跳转
// 简单跳转
Router.build("test").go(this);
// startActivityForResult
Router.build("test").requestCode(0).go(this);
// 携带bundle参数
Router.build("test").with("key", Object).go(this);
// 添加回调
Router.build("test").go(this, new RouteCallback() {
    @Override
    public void callback(RouteStatus status, Uri uri, String message) {
        // do something
    }
});

// 获取路由对应的intent
Router.build("test").getIntent();
// 获取注解的Fragment
Router.build("test").getFragment();

进阶用法

建议浏览 wiki.

讨论

QQ group: 271849001

Donate ❤️

Click here.

License

Apache 2.0