android OnBackPressed在活动恢复时不会触发

时间:2012-08-08 05:09:30

标签: android

我有一个Tab活动和5个子活动。
Tab活动是发射器活动。

当使用tabHost.setCurrentTabByTag(CommonParams.HOME_TAG);启动活动1时,手机的后退按钮会触发Actvitiy 1的OnBackPressed。

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

我通过以下代码按Tab键加载活动。

        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时,活动1不会重新开始。它恢复了。我想,OnBackPressed()不会因恢复活动而被解雇。

活动是否失去了焦点?如果是这样,如何避免活动失去焦点,或者如何关注活动OnResume()?

有人可以帮助我找出为什么OnBackPressed没有开火以及如何让它发挥作用。

先谢谢

1 个答案:

答案 0 :(得分:1)

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

无论如何 - 对于您想要实现的行为 - 我建议您不要使用标签TabActivity,而是FragmentsFragmentManager。片段具有内置机制处理后退按钮请求的原因,无论如何,android建议使用它。这就是为什么TabActivity 已弃用很久以前,因为Honeycomb,以及为Froyo和Gingerbread提供的竞争性,它添加了面向Android片段的API。

谷歌在TabActivity的文档中写道:

  

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

google不希望TabActivity再次使用。