Android ARouter路由在组件化开发中使用步骤

15 篇文章 0 订阅

1、根目录build.gradle中配置

repositories {
    mavenCentral()
    maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
}

classpath 'com.alibaba:arouter-register:1.0.2'

2、某个module模块需要用到ARouter路由就在该module的build.gradle中配置如下代码


defaultConfig {
    javaCompileOptions {
        annotationProcessorOptions {
            arguments = [AROUTER_MODULE_NAME: project.getName()]
        }
    }
}

implementation 'com.alibaba:arouter-api:1.5.0'
annotationProcessor 'com.alibaba:arouter-compiler:1.2.2'
    

3、Application中onCreate配置

  if(BuildConfig.DEBUG){
      ARouter.openDebug();
      ARouter.openLog();
  }
  ARouter.init(this);

示例:

1、无参跳转,从A界面跳转B界面
A界面:

//注意build传的路径必须和B界面中的path对应,且必须'/'开头
ARouter.getInstance().build("/xx/B").navigation();

B界面:

@Route(path = "/xx/B")
public class B extends Activity

2、带参数跳转,从A界面跳转B界面
A界面:


//注意,with中的key必须和接收界面中的@Autowired定义的属性名保持一致
ARouter.getInstance()
    .build("/xx/B")
    .withString("userName","张无忌")
    .withString("userPhone","185305555")
    .withInt("age",20)
    .navigation();

B界面:


//注意属性定义必须public,使用private会报异常
@Autowired
public String userName;
@Autowired
public String userPhone;
@Autowired
public int userAge;


//onCrtate初始化接入
ARouter.getInstance().inject(this);


//日志打印接收数据
Log.e("ARouter","userName:" + userName);
Log.e("ARouter","userPhone:" + userPhone);
Log.e("ARouter","userAge:" + userAge);

3、进阶学习,拦截器

LoginInterceptorImpl .java实现拦截逻辑

// 在跳转过程中处理登陆事件,这样就不需要在目标页重复做登陆检查
// 拦截器会在跳转之间执行,多个拦截器会按优先级顺序依次执行
@Interceptor(name = "login", priority = 1)
public class LoginInterceptorImpl implements IInterceptor {
    @Override
    public void process(Postcard postcard, InterceptorCallback callback) {
        String path = postcard.getPath();
        boolean isLogin = true;

        if (isLogin) { // 如果已经登录不拦截
            callback.onContinue(postcard);
        } else {  // 如果没有登录
            switch (path) {
                // 不需要登录的直接进入这个页面
                case ActivityCommon.ModuleLogin.LoginActivity:
                    callback.onContinue(postcard);
                    break;
                // 需要登录的直接拦截下来
                default:
                    callback.onInterrupt(null);
                    break;
            }
        }
    }

    @Override
    public void init(Context context) {//此方法只会走一次
    }
}

LoginNavigationCallbackImpl.java实现跳转

public class LoginNavigationCallbackImpl  implements NavigationCallback {
    @Override //找到了
    public void onFound(Postcard postcard) {

    }

    @Override //找不到了
    public void onLost(Postcard postcard) {

    }

    @Override    //跳转成功了
    public void onArrival(Postcard postcard) {

    }

    @Override
    public void onInterrupt(Postcard postcard) {
        String path = postcard.getPath();
        Bundle bundle = postcard.getExtras();
        // 被登录拦截了下来了
        // 需要调转到登录页面,把参数跟被登录拦截下来的路径传递给登录页面,登录成功后再进行跳转被拦截的页面
        ARouter.getInstance().build(ActivityCommon.ModuleLogin.LoginActivity)
                .with(bundle)
                .navigation();
    }
}

使用示例:

ARouter.getInstance()
    .build(ActivityCommon.ModuleARouter.ARouterActivity)
    .withString(ARouterActivity.USER_NAME, "张无忌")
    .withString(ARouterActivity.USER_PHONE, "185305555")
    .withInt(ARouterActivity.USER_AGE, 20)
    .navigation(activity,new LoginNavigationCallbackImpl());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Android ARouter 是一个用于实现组件、模块开发路由框架,它提供了一种简单的方式来实现不同组件之间的跳转和通信。 使用 ARouter步骤如下: 1. 在项目的 build.gradle 文件添加依赖: ```groovy implementation 'com.alibaba:arouter-api:x.x.x' annotationProcessor 'com.alibaba:arouter-compiler:x.x.x' ``` 请将 `x.x.x` 替换为最新的版本号。 2. 在需要使用 ARouter 的模块,创建一个类似于 Application 的类,并在其 `onCreate()` 方法进行 ARouter 的初始: ```java public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); if (BuildConfig.DEBUG) { ARouter.openLog(); ARouter.openDebug(); } ARouter.init(this); } } ``` 3. 在需要跳转到的目标页面使用 `@Route` 注解进行标记,以便 ARouter 进行识别: ```java @Route(path = "/path/to/target") public class TargetActivity extends AppCompatActivity { // ... } ``` 4. 在需要跳转的地方,通过调用 `ARouter.getInstance().build("/path/to/target").navigation()` 来实现页面跳转: ```java ARouter.getInstance().build("/path/to/target").navigation(); ``` 5. 如果需要传递参数,可以使用 `withXxx` 方法来添加参数: ```java ARouter.getInstance() .build("/path/to/target") .withString("key", "value") .navigation(); ``` 通过以上步骤,你就可以在 Android 项目使用 ARouter 进行页面跳转和参数传递了。当然,ARouter 还提供了其他功能,比如拦截器、URI 跳转等,你可以根据具体需求进行使用。希望对你有所帮助!如果还有其他问题,请继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落魄的Android开发

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值