我有一个Tabhost,在该tabhost中有4个选项卡,每个选项卡中都有一个活动。当一个活动失去焦点时,我想用onDestroy或onPause方法捕获它。
我尝试了什么?
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
- 当标签获得焦点(?!*%>)然后调用子活动的onCreate时,此方法调用子活动的onDestroy。
我已经覆盖了生命周期中几乎所有受保护的函数以及finish()
。但什么都没发生。
我已经尝试过TabHosts onTabChanged
函数,但是我无法从tabhost中检索任何活动而且我无法调用任何finish()
- 就像函数一样,所以它也失败了。
请帮我解决这个问题!!提前谢谢。
编辑:
顺便说一句,我正在扩展Activity而不是TabActivity。
答案 0 :(得分:1)
tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
Activity currentActivity = getCurrentActivity();
if (currentActivity instanceof TheActivity) {
// do nothing, we are here!
}
else {
((TheActivity) currentActivity).methodToStopTimer();
}
}
});
或最常见的方式
tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
Activity currentActivity = getCurrentActivity();
if (!currentActivity instanceof TheActivity) {
((TheActivity) currentActivity).methodToStopTimer();
}
}
});
编辑:从我的头脑中,我认为该方法是TabHost的一部分,但没关系,只需检查tabId,以便了解您所处的活动:
if(!tabId.equals("idForYourActivity")){
ActivityName.methodToStopTimer();
}
您需要将methodToStopTimer()
设为静态。
答案 1 :(得分:0)
在onStop()中执行,而不是在destroy;它适合你的场景:)尝试和电话:)欢呼