跳转至MainActivity后销毁含登录Fragment的AuthenticationActivity
解决方案:跳转至MainActivity时销毁AuthenticationActivity
直接在启动MainActivity后调用宿主Activity的finish()方法即可彻底销毁AuthenticationActivity,修改后的代码如下:
val intent = Intent(context, MainActivity::class.java) startActivity(intent) // 销毁Fragment所在的AuthenticationActivity activity?.finish()
关键说明
activity?.finish()会直接销毁当前Fragment依附的AuthenticationActivity,用户按下返回键时不会回到登录流程,完全符合需求。- 你之前尝试的
IntentFlags(如FLAG_ACTIVITY_CLEAR_TOP)主要用于调整Activity栈的整体结构,并非直接销毁当前Activity,所以单独使用无法达成目标。如果需要清理整个登录相关的Activity栈(比如之前还有其他登录流程的Activity),可以结合Flags使用:
val intent = Intent(context, MainActivity::class.java).apply { // 清除栈中MainActivity之上的所有Activity,若MainActivity已存在则复用实例 flags = Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP } startActivity(intent) activity?.finish()
- 注意确保调用
finish()的是AuthenticationActivity实例:Fragment中通过activity获取的就是宿主Activity对象,避免使用Application Context调用(无法生效)。
内容的提问来源于stack exchange,提问作者Antony Lajes
相关产品推荐
相关产品推荐

