我有一个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没有开火以及如何让它发挥作用。
先谢谢
答案 0 :(得分:1)
你所描述的是android的正常/默认行为。它正是它的设计工作方式。如果你希望它的工作方式不同 - 你需要自己实现它,并覆盖主标签活动的onBackPressed()
回调。
无论如何 - 对于您想要实现的行为 - 我建议您不要使用标签TabActivity
,而是Fragments
和FragmentManager
。片段具有内置机制处理后退按钮请求的原因,无论如何,android建议使用它。这就是为什么TabActivity
已弃用很久以前,因为Honeycomb,以及为Froyo和Gingerbread提供的竞争性,它添加了面向Android片段的API。
谷歌在TabActivity
的文档中写道:
新应用程序应使用Fragments而不是此类;要继续在旧设备上运行,您可以使用v4支持库,该库提供与DONUT兼容的Fragment API版本
google不希望TabActivity
再次使用。