不使用startActivityForResult()能否返回携带保存数据的上一个Activity?
解决方案
系统默认向上导航逻辑会重建父Activity实例,不会复用栈内已存在的实例,你可以选择以下任意一种方案解决,均不需要在ThirdMainActivity新增额外按钮或交互逻辑:
方案1:配置SecondMainActivity启动模式(修改最简单)
在AndroidManifest.xml中找到SecondMainActivity的声明节点,添加android:launchMode="singleTop"属性即可,配置示例:
<activity android:name=".SecondMainActivity" android:launchMode="singleTop" <!-- 保留你原有其他配置,比如android:parentActivityName等 --> />
配置后如果栈顶已经存在SecondMainActivity的实例,系统会直接复用该实例,不会新建,原有存储的用户名字符串会完整保留。
方案2:重写ThirdMainActivity向上导航逻辑(兼容性最优)
左上角向上箭头默认走重建父Activity的逻辑,你可以重写导航方法让它和系统返回键行为一致,直接回到已有的SecondMainActivity实例:
Java版本代码:
@Override public boolean onSupportNavigateUp() { onBackPressed(); return true; }
Kotlin版本代码:
override fun onSupportNavigateUp(): Boolean { onBackPressed() return true }
该方案不需要修改启动模式,不会引入其他页面跳转逻辑变更,适配所有系统版本。
注意:两种方案二选一即可,同时兼容系统底部返回键和页面左上角返回箭头操作
内容的提问来源于stack exchange,提问作者Sleepi Beans
相关产品推荐
相关产品推荐

