2012-08-24 1 views
0

저는 Tabhost가 있고 그 탭 호스트에는 4 개의 탭이 있으며 모든 탭에는 활동이 있습니다. 액티비티가 포커스를 잃었을 때 나는 onDestroy 나 onPause 메서드로 그것을 잡아 내고 싶다.onDestroy 또는 onPause가 TabHosts 자식 활동에서 호출되지 않았습니다.

나는 무엇을 시도 했습니까?

  1. intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)은 - 탭 이득 초점 (?! * %>)과 다음 자식 활동의에서 onCreate를 호출 할 때이 방법은 자식 활동의들의 OnDestroy를 호출합니다.

  2. 나는 라이프 사이클의 거의 모든 보호 기능을 오버라이드했으며, 또한 finish()을 오버라이드했다. 그러나 아무 일도 일어나지 않았습니다.

  3. TabHosts를 사용해 보았지만 tabhost에서 어떤 활동도 검색 할 수없고 어떤 finish()과 같은 기능도 호출 할 수 없으므로 실패했습니다.

이 상황을 도와주세요 !! 미리 감사드립니다.

편집 :

그런데 Activity가 TabActivity가 아닙니다.

+0

부모 작업 인 TabActivity는 재정의 된 메서드 onPause(), onDestroy() 등에서 호출됩니다. – Carnal

+0

괜찮 았지만 내 질문은 삭제해도됩니까? 하위 활동 (TabHost에서)에 타이머가 있습니다. 나는 그것을 멈추기 위해 그 활동에서 초점을 잃는 상황을 포착하고 싶다. –

+0

다른 탭으로 전환하려고 할 때와 같은 뜻입니까? – Carnal

답변

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의 일부라고 생각하지만, 결코 마음

if(!tabId.equals("idForYourActivity")){ 
    ActivityName.methodToStopTimer(); 
} 

당신은 정적하는 methodToStopTimer()가 필요합니다 : 당신은 당신이있는 활동을 알 수 있도록, 단지 TABID를 확인합니다.

+0

getCurrentActivity() 및 TheActivity가 액티비티에 의해 인식되지 않습니다. –

+0

"TheActivity"는 내가 가진 유일한 이름이고, 거기에 타이머가있는 액티비티의 이름을 넣어야합니다. – Carnal

+0

그렇군요.하지만 getCurrentActivity()를 사용하면 어떨까요? –

0

onStop()에서 수행하십시오. 그것은 당신의 시나리오에 맞는 :)

+0

아니요 :(작동하지 않습니다. 모든주기를 시도했습니다. –

+0

Explicit Intent를 사용하여 탭간에 전환 하시겠습니까? 그렇다면 startActivity (intent) 문 앞에 finish를 호출 한 다음 onStop()을 사용하십시오. –

+0

TabSpec을 사용하여 tabhost에 setContent (intent) –

관련 문제