android - 在不破坏底部活动的情况下返回一些活动
问题描述
我做了一个包含 3 个活动的简单示例:
ActivityA
ActivityB
ActivityC
他们每个人只有一个按钮。
按钮
ActivityA
打开ActivityB
val intent = Intent(this, ActivityB::class.java) startActivity(intent)
按钮
ActivityB
打开ActivityC
val intent = Intent(this, ActivityC::class.java) startActivity(intent)
Button on
ActivityC
应该回到ActivityA
但在过程中杀死 ActivityBval intent = Intent(this, ActivityA::class.java) intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT) startActivity(intent)
它做我想要的,整个流程在登录时看起来像这样:
ActivityA onCreate()
ActivityA button clicked
ActivityB onCreate()
ActivityB button clicked
ActivityC onCreate()
ActivityC button clicked
ActivityB onDestroy()
ActivityA onDestroy()
ActivityA onCreate()
ActivityC onDestroy()
这个解决方案的问题是ActivityA
被重新创建(销毁和创建)的事实。有没有办法只恢复它?
免责声明:
这当然只是一个简化的案例。由于我的应用程序中的几个原因,我宁愿避免使用onActivityResult()
和finish()
点击方法。我需要保留正确的后退按钮行为。
解决方案
你做的几乎是对的。您缺少的(以避免重新创建活动)是一个FLAG_ACTIVITY_SINGLE_TOP
标志。
val intent = Intent(this, ActivityA::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
startActivity(intent)
更多关于它在这里
推荐阅读
- security - 有人可以通过设置 x-hasura-role 来伪造对 Hasura GraphQL Engine 的请求吗?
- java - 赋值的左边一定是变量?
- c++ - 在 Visual Studio 2017 中使用 CMake 向静态库添加依赖项不起作用
- c# - 有没有办法在属性中输入变量(参数)?
- laravel - 使用 vue.js 和 laravel 哪种方法更好?
- octave - Octave GUI 命令窗口 - 我可以增加显示的行数和列数吗?
- debugging - 如何在 VS Code 中调试 Neutralino?
- excel - 单元格中特殊字符之后/之前的粗体部分文本
- react-native - 如何将现有的 React Native App 升级到新的 React Native 版本?我们有任何文件吗?
- c++ - C++ 在调用 std::cin 之前删除任何先前的输入