0

我有一个 Tabhost,在该 tabhost 中有 4 个选项卡,每个选项卡中都有一个活动。当一个活动失去焦点时,我想用 onDestroy 或 onPause 方法来捕捉它。

我试过什么?

  1. intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)- 此方法在选项卡获得焦点时调用子活动的 onDestroy (?!*%>),然后调用子活动的 onCreate。

  2. 我已经覆盖了生命周期中几乎所有受保护的功能,而且finish(). 但是什么也没发生。

  3. 我已经尝试过 TabHostsonTabChanged函数,但我无法从 tabhost 检索任何活动,也无法调用任何类似finish()函数,所以它也失败了。

请帮助我解决这种情况!提前致谢。

编辑:

顺便说一句,我正在扩展 Activity 而不是 TabActivity。

4

2 回答 2

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()保持静态。

于 2012-08-24T13:39:32.097 回答
0

在 onStop() 中执行,而不是在销毁时执行;它适合您的情况:) 尝试和电话 :) 干杯

于 2012-08-24T13:35:53.493 回答