Android统一处理登录后携带数据跳转到目标页面的方式

 更新时间:2023年06月09日 08:32:19   作者:shortybin  
我们在开发的时候,一定会遇到页面跳转,下面这篇文章主要给大家介绍了关于Android统一处理登录后携带数据跳转到目标页面的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

需求场景

我们在开发应用的时候经常会遇到先登录,登录成功后再跳转到目标页面。比如商品详情页面我们点击购买必须要先登录,登录完成才能去下单支付。针对这种场景,我们一般有两种做法:

  • 点击购买跳转到登录,登录完成需要用户再次点击购买才能去下单支付页面,这种用户体验不是很好。
  • 点击购买跳转到登录,登录完成直接跳转到下单支付页面。

第一种我们就不谈了产品经理不同意🐶。第二种我们一般是在 onActivityResult 里面获取到登录成功,然后根据 code 跳转到目标页面。这种方式缺点就是我们要在每个页面都处理相同的逻辑还有定义各种 code,如果应用里面很多这种场景也太繁琐了。那有没有统一的方式去处理这种场景就是我们今天的主题了。

封装方式

我们的应用是组件化的,APP 的页面跳转使用了 Arouter。所以我们统一处理使用 Arouter 封装。直接上代码

fun checkLoginToTarget(postcard: Postcard) {//Postcard 是 Arouter 的类
    if (User.isLogin()) {
        postcard.navigation()
    } else {
        //不能使用 postcard 切换 path 直接跳转,因为 group 可能不同,所以重新 build
        ARouter.getInstance().build(Constant.LOGIN)
            .with(postcard.extras)//获取携带的参数重新转入
            .withString(Constant.TAGACTIVIFY, postcard.path)//添加目标路由
            .navigation()
    }
}
//登录成功后在登录页面执行这个方法
fun loginSuccess() {
    val intent= intent
    val target = intent.getStringExtra(Constant.TAGACTIVIFY)//获取目标路由
    target?.apply { 
        if (isNotEmpty()){
            val build = ARouter.getInstance().build(this)
            val extras = intent.extras//获取携带的参数
            if (extras != null) {
                build.with(extras)
            }
            build.navigation()
        }
    }
    finish()
}

代码加了注释,使用 Kotlin 封装了顶层函数,登录页面在登录成功后跳转到目标页面,针对上面的场景直接调用 checkLoginToTarget 方法。

checkLoginToTarget(ARouter.getInstance().build(Constant.PAY_PAGE).withInt(Constant.GOOD_ID,id))

通过 Arouter 传入下单支付的路由地址,并且携带了商品的 ID,生成了 Postcard 参数。登录成功后能带着商品 ID 直接下单支付了。

最后

如果项目里没有使用路由库可以使用 Intent 封装实现,或者别的路由库也可以用上面的方式去做统一处理。

到此这篇关于Android统一处理登录后携带数据跳转到目标页面的文章就介绍到这了,更多相关Android登录后携带数据跳转页面内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

最新评论