1

탭 액티비티 인 Android 액티비티가 있습니다. 탭 활동에 여러 개의 탭을 추가하려고합니다.Android 강제 탭 활동 만들기?

제 문제는 탭을 클릭하기 전까지는 이러한 활동이 생성되지 않습니다 (onCreate가 호출되지 않음)입니다. 이것은 브로드 캐스트 수신자를 등록해야하기 때문에 문제입니다. 특정 탭이 열리기 전에 전송 된 브로드 캐스트가있을 수 있습니다. 정적으로 내 수신기를 설정하고 다른 곳에서 등록

  • :

    나는에 의해이 문제를 해결하기 위해 노력했다. 메소드를 호출해야하기 때문에 불가능합니다.
  • tabHost.setCurrentTabByTag (the_tag)을 호출 한 다음 내 루트 탭으로 다시 전환합니다. 이것은 때때로 작동하며 이것은 매우 못생긴 해결책입니다.
  • 활동을 사용하지 않고 대신보기를 사용합니다. 또한 매우 우아한 솔루션이 아닙니다. 내 tabHost 활동을 모든 종류의 관련없는 일을하는 거대한 마스터 클래스로 바꾸기 때문입니다.

이 문제의 가장 좋은 해결책은 무엇입니까? 수신자가 없을 때 어떻게 든 사라진 것이 아니라 전송 된 방송을 '대기열'로 만들 수 있습니까? 내 탭 활동을 강제로 만들 수 있습니까? (문제가되지 않지만 일부 사용자는 거의 모든 탭을 사용할 수 있습니다.) 다른 아이디어?

편집 :

이 질문에 커먼즈웨어에 따르면; 나는이 같은 활동에 로직의 다른 종류를 분리해서 어떻게

: Update tabs from a tab's activity in a Android TabHost

즉 약간 내 질문에 변경 ... 대신 활동의 전망과 탭을 구현하는 더 좋은 생각이 될 수있다? 30 + 메소드 uberactivity를 기대하지 않습니다.

답변

0

나는 탭 활동이 아닌 내 브로드 캐스트 리시버로 TabActivity를 사용합니다. 그러면 코드를보다 깨끗하게 처리하고 브로드 캐스트를 처리하는 방법을 제어 할 수 있습니다.

+0

어떻게 해결 될까요? 나는 아직 방송이 도착할 때 메소드를 호출해야하는 초기화되지 않은 탭 활동이 남아있다. –

+1

현재 실행중인 작업에서만 메서드를 호출하고 호출해야합니다. 탭 호스트의 모든 활동을 초기화하고 동시에 실행할 수 있다고 생각하지 않습니다. 그것은 전화 배터리 및 프로세서에 상당한 유출 될 것이므로 그렇게하는 것은 나쁜 습관 일 것입니다. 활동이 일시 중지되었거나 아직 초기화되지 않은 상태에서 브로드 캐스트가 발생하면 해당 활동을 TabActivity에 저장하고 해당 활동이 재개 될 때만 관련 활동으로 전달할 수 있습니다. – m6tt

+0

@disretrospect 어떻게하면 생성/재개 될 때 TabActivity에서 관련 childActivity로 데이터를 전달할 수 있습니까? 고마워 – zeratul021