0

我有一个选项卡活动和 5 个子活动。
选项卡活动是启动器活动。

当使用 Activity 1 开始时tabHost.setCurrentTabByTag(CommonParams.HOME_TAG);,手机的后退按钮按下会触发 Actvitiy 1 的 OnBackPressed。

但是,当我启动活动 1,然后通过单击第二个选项卡导航到活动 2,然后通过单击第一个选项卡返回到活动 1 时,手机的后退按钮按下不会触发 OnBackPressed()。它使应用程序退出。

我通过以下代码在制表机上加载活动。

        intent = new Intent().setClass(this, Activity1.class);
        spec = tabHost
                .newTabSpec(CommonParams.HOME_TAG)
                .setIndicator("Home",
                        res.getDrawable(R.drawable.ic_tab_home))
                .setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, Activity2.class);
        spec = tabHost
                .newTabSpec(CommonParams.PAGE2_TAG)
                .setIndicator("Page2",
                        res.getDrawable(R.drawable.ic_tab_page2))
                .setContent(intent);
        tabHost.addTab(spec);

因此,当使用选项卡从 Home 导航到 Page2 然后返回 Home 时,Activity 1 不会重新开始。它被恢复。我想, OnBackPressed() 不会因恢复活动而被解雇。

活动是否失去了焦点?如果是这样,如何避免活动失去焦点,或者如何将焦点放在活动 OnResume() 上?

有人可以帮我找出 OnBackPressed 没有触发的原因以及如何使其工作。

提前致谢

4

1 回答 1

1

您所描述的是android的正常/默认行为。这正是它设计的工作方式。如果您希望它以不同的方式工作 - 您需要自己实现它并覆盖onBackPressed()主选项卡活动的回调。

无论如何-对于您想要实现的行为-我建议您不要使用制表符 and TabActivity,而是Fragmentsand FragmentManager。Fragments 有内置的机制来处理你需要的后退按钮请求,android 建议无论如何都使用它。这就是为什么很久以前 TabActivity 不推荐使用的原因,因为 Honeycomb,以及为 Froyo 和 Gingerbread 添加了面向 android 片段的 API 的可竞争性。

这是谷歌在文档中写的TabActivity

新的应用程序应该使用 Fragments 而不是这个类;要继续在旧设备上运行,您可以使用 v4 支持库,它提供了与 DONUT 兼容的 Fragment API 版本

谷歌不想TabActivity再使用了。

于 2012-08-08T05:37:02.520 回答