Activity返回首页

在Android应用中,当从D Activity点击返回时需要直接跳转到首页(TabLayout+Fragment+ViewPager组合),直接启动MainActivity可能导致TabLayout选中状态问题。解决方案是使用全局变量currencyFlag记录起点,结合Intent.FLAG_ACTIVITY_CLEAR_TOP清除栈中活动,根据currencyFlag决定跳转到B_activity。参考了相关博客文章进行实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Activity回退到首页的主界面

最近项目中有个这样的场景A Activity (是Fragment) ->进入 B Activity ->进入 C Activity ->进入 D Activity中,在D Activity中有个按钮点击直接回到首页。但是首页是TabLayout + Fragment+ ViewPage做的。如果直接 startActivity(…,MainActivity::class.java),会出现一些意想不到的问题,比如处理 TabLayout 选中的那是项。参考了https://blog.youkuaiyun.com/xuwei_net/article/details/81367243 的实现方式,根据我自己的需求进行了调整。
我最终解决方案是:首页进入有两个入口,在工具类中定义一个全局变量,从哪里进入标记一下 var currencyFlag=0 ,到D Activity中点击回到首页时根据currencyFlag来判断跳到首页的上一个B_xxActivity 如一下代码:

fun backPressed() {
        val intent = Intent()
        intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
        if (currencyFlag == 0) {
            intent.setClass(this, B_1Activity::class.java)
        } else if (currencyFlag == 1) {
            intent.setClass(this, B_2Activity:class.java)
        }
        intent.putExtra("flag",10)
        startActivity(intent)
        this@DActivity.finish()
 }

Intent.FLAG_ACTIVITY_CLEAR_TOP这个的意思就是B_1Activity栈中把它前面的Activity全部踢出栈,重新创建一个B_1Activity。
跳到B_1Activity时 根据 flag 判断进行finish:

 if (intent.getIntExtra("flag", 0) == 10) {
            this.finish()
 }

方法有笨但这样比较好处里
参考资料:
https://blog.youkuaiyun.com/xuwei_net/article/details/81367243.
https://mrfzh.github.io/2019/09/15/Activity-%E7%9A%84%E5%90%AF%E5%8A%A8%EF%BC%9A%E5%9B%9B%E7%A7%8D%E5%90%AF%E5%8A%A8%E6%A8%A1%E5%BC%8F%E5%8F%8A%E5%90%84%E7%A7%8D-FLAG/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值