前言
首先说明这种情况是属于少见的那一种,但是架不住产品会有这种需求
好的狗子,满足他
修改 BaseActivity 代码
/**
* 登录页面不登录,直接点击返回,需要跳转的指定页面
*/
var onBackTargetActivity = ""
override fun startActivity(intent: Intent?) {
super.startActivity(
if (isGreenChannel) {
intent
} else {
if (isLogin()) {
intent
} else {
intent?.putExtra(KeyUtils.TARGET_ACTIVITY, intent.component?.className)
// 较之前版本添加返回的目标页面
intent?.putExtra(KeyUtils.ON_BACK_TARGET_ACTIVITY, onBackTargetActivity)
?.setClass(this, LoginActivity::class.java)
}
}
)
}
我们在 Base 的拦截器中,新增一个变量,在跳转之前赋值,这样就会保存到 Intent 当中,然后去登录页去取
private val onBackPressTargetActivity by lazy {
Class.forName(intent.extras?.getString(KeyUtils.ON_BACK_TARGET_ACTIVITY)!!)
}
override fun onBackPressed() {
if (intent.getStringExtra(KeyUtils.ON_BACK_TARGET_ACTIVITY).isNotEmpty()) {
startActivity(Intent(this, onBackPressTargetActivity))
finish()
} else {
super.onBackPressed()
}
}
如果不登录直接点击返回,那么我们只需要判断有没有指定要返回的页面就可以了
调用的时候注意给 onBackTargetActivity 赋值必须是 XXXActivity::class.java.toString()
系列文章
- 登录拦截的优雅实现
- 绿色通道问题
- 不登录直接返回跳转目标页面问题
- 跳转传值回传问题
- 以及一些暂未发现,后续发现或者读者提出的新问题补充进此列表
关注这个公众号,我们聊聊别的,一起搞钱。