android - 为什么在多选项卡 Activity 中未检测到后退按钮?

标签 android android-intent android-tabhost

我有主要 Activity 。有 4 个选项卡 (TabHost)。我已经覆盖了 MainActvity 中的 onBackPress() 以及所有 4 个 Activity 。此按钮向用户显示一个对话框并用于确认退出 应用程序启动时。它显示第一个选项卡。然后,如果我按回它工作正常。但是,如果我转到下一个 3 个选项卡,然后按返回键,该应用程序将停止。调用 Main 的 OnDestroy()。但是用户没有对话。甚至注意到在日志猫中打印。我在 onBackPressed() 方法中编写了 From 和 5 个 Activity ,包括 MainActivity

我也试过 onKeyDown() 返回键,但结果是一样的?有没有人有同样的经历?请帮助我。

最佳答案

当我使用 TabHost 时,我发现很难在以前的选项卡中打开新 Activity 。我谷歌了一下,发现 GroupActivity 是解决这个问题的最佳方法。 GroupActvity Example 但是 GroupActivity 在上一个选项卡中打开新 Activity 时也有同样的问题。后退按钮无法正常用于新 Activity 。搜索后我发现这是因为关注点总是在家长 Activity 上。我必须做

setFocusable(true); requestFocus();

在我的新 Activity 组件上获得关注。

我现在使用 GroupActivity 来自定义 Tabbar 和 Activity 。因为我还在父 Activity 中维护 Activity ID 堆栈,以便当用户按下后退按钮时我可以弹出最近的 Activity 。

否则,如果您不打算实现 Activity 焦点,那么您应该在父级中维护堆栈,当按下后退按钮时,它将启动父级 onBackPressed();您可以调用链接中讨论的子 onBackPressed() 功能。

onBackPressed() not working inside ActivityGroup

关于android - 为什么在多选项卡 Activity 中未检测到后退按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6368012/

相关文章:

安卓工作室 3.0 : Unable to delete file

java - ListView 的 Android 自定义行项目

android - 如何读取检测到的 NFC 标签(NDEF 消息)。安卓NFC

android: 使用 ActivityGroup 嵌入 Activity

android - Parcelable 与公共(public)静态。安卓模式

android - 不要为同一个应用程序打开两次

java - core-ktx 1.7.0 和 Hilt

android - Ice Cream Sandwich Android 标签样式

android - 如何在 Android 中的 Listview 的 CustomListAdapter 类中捕获 Intent 的结果

android - 试图让一个简单的锁屏应用程序工作,与 Service & Reciever 作斗争