0

私にはタブホストがあり、そのタブホストには4つのタブがあり、すべてのタブにアクティビティがあります。アクティビティがフォーカスを失ったとき、onDestroyまたはonPauseメソッドでそれをキャッチしたいと思います。

私は何を試しましたか?

  1. intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)-このメソッドは、タブがフォーカスを取得したときに子アクティビティのonDestroy(?!*%>)を呼び出してから、子アクティビティのonCreateを呼び出します。

  2. ライフサイクルのほぼすべての保護された機能をオーバーライドしましたfinish()。しかし、何も起こりませんでした。

  3. TabHostsonTabChanged関数を試しましたが、tabhostからアクティビティを取得できず、同様の関数を呼び出すfinish()ことができないため、失敗しました。

この状況で私を助けてください!前もって感謝します。

編集:

ちなみに私はTabActivityではなくActivityを拡張しています。

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 に答える