【问题标题】:How to go back to Home Activity from a specific activity without overriding back button如何在不覆盖返回按钮的情况下从特定活动返回主活动
【发布时间】:2013-04-02 02:26:58
【问题描述】:

我是 Android 新手。在这里,我有活动 A、B、C、D,其中 A 是 Home Activity。它在堆栈中为 A->B->C->D

当我从 B 或 C 按下返回时,它应该正常返回。但是如果我从 D 按下返回它应该返回到 A 并且从 A 应用程序应该退出

【问题讨论】:

  • 为什么不想覆盖后退按钮?
  • @codeMagic 我认为除了覆盖后退按钮没有其他选择
  • @Pragnani 我同意,如果可能的话,至少没有什么不是真正的 hacky。这就是为什么我不知道为什么 OP 不想
  • 发布然后删除的答案是最直接的。
  • 我删除(并重新阅读),因为问题明确指出他不想覆盖 onBackPressed()

标签: android user-interface


【解决方案1】:

我猜你可以拦截 onStop() 并猜测活动是否正在切换到 C 并启动 A。但这会导致难以维护的混乱,我不建议这样做。

但是,如果由于某种原因您仍然不想覆盖 onBackPressed 并且您设法猜测 D 正在停止,因为按下了返回(不覆盖 onBackPressed(),只需从那里开始一个带有 @987654321 的 Intent 的活动@ (调用 i.setFlags(FLAG_ACTIVITY_CLEAR_TOP) )

根据文档:

如果设置了,并且正在启动的 Activity 已经在当前任务中运行,那么不会启动该 Activity 的新实例,而是关闭它之上的所有其他 Activity,并且此 Intent 将被传递到(现在在顶部)作为新 Intent 的旧活动。

所以A会被带回来,B和C会被清除。

【讨论】:

  • 覆盖后退按钮是选项,但他不想这样做。
  • 谢谢!...现在我认为除了覆盖后退按钮之外别无他法...它现在正在工作。再次感谢@fedepaol
【解决方案2】:

当您开始新活动时,请完成旧活动,例如,如果您想从 B 开始 C:

Intent I = new Intent(B.this , C.class) ;
 startActivity (I);  
B.this.finish();

【讨论】:

  • 但是当他按下返回按钮时,他无法从 C 导航回 B
  • 我想从 C 导航回 B...感谢您的回复。它现在正在工作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多