如何以编程方式更改活动状态?

时间:2014-06-01 12:55:41

标签: android android-tabhost onresume onpause

在tabhost应用程序中;

当我在标签1活动中更改激活的标签时;通过运行此代码:

((TabActivity) getParent()).getTabHost().setCurrentTab(2);

((TabActivity) getParent()).getTabHost().setCurrentTab(2);

选项卡2正确显示,但是,标签1活动未移至"暂停" state及其onPause()方法未被调用。

同样,当我想切换回选项卡1时,它的onResume()方法没有被调用(正如我们所期望的那样,因为状态之前没有改变过)。

为什么国家不会改变?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

实际上,切换选项卡时片段不会暂停,因为它们与活动相关联。来自文档:

  

onPause():片段不再与用户交互,因为其活动正在暂停或片段操作正在活动中修改它。

     

onResume():使片段与用户交互(基于其包含的活动被恢复)。

相反,您可以使用ActionBar选项卡,并让您的活动实现TabListener

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    pager.setCurrentItem(tab.getPosition());
}


@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}


@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}