繁体   English   中英

恢复活动时,Android OnBackPressed无法触发

[英]android OnBackPressed not firing when the activity is resumed

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

使用tabHost.setCurrentTabByTag(CommonParams.HOME_TAG);启动活动1时tabHost.setCurrentTabByTag(CommonParams.HOME_TAG); ,电话的后按按钮会触发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);

因此,当从首页导航到Page2,然后使用选项卡返回首页时,活动1并没有重新开始。 恢复。 我想OnBackPressed()不会在恢复的活动上触发。

该活动是否失去了重点? 如果是这样,如何避免活动失去焦点,或者如何将焦点赋予活动OnResume()?

有人可以帮助我找到为什么OnBackPressed不触发以及如何使其工作。

提前致谢

您所描述的是android的正常/默认行为。 这正是它设计的工作方式。 如果您希望它与众不同,那么您需要自己重写主选项卡活动的onBackPressed()回调来实现它。

无论如何-对于您要实现的行为-我建议您不要使用Tabs和TabActivity ,而应使用FragmentsFragmentManager 片段具有内置的机制来处理您为什么需要后退按钮的请求,Android建议无论如何都使用它。 这就是为什么自Honeycomb以来, TabActivity很久以前就不推荐使用的原因,而Froyo和Gingerbread提供的竞争力又增加了面向Android片段的API。

这就是谷歌在TabActivity文档中写的:

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

Google不想再使用TabActivity

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM