2012-03-05 2 views
0

TabActivity에 4 개의 탭이 있습니다. 각 탭에서 활동이 시작되고 각 활동에서 여러 단편이 시작됩니다. 하나의 탭에서 어떤 이벤트가 발생하면 다른 탭의 백 스택을 지우고 싶습니다. 따라서 사용자가 나머지 탭을 클릭하면 조각이 다시 시작됩니다.다른 탭 백 스택을 지우는 방법은 무엇입니까?

답변

0

많은 생각을 한 후에 내 문제에 대한 해결책을 찾았습니다. 제가 생각한 첫 번째 해결책은 입니다. 다른 탭의 조각 관리자를 가져 와서 모든 조각을 나타낼 수 있습니다. 하지만이를 실행하려고 시도하면 예외가 발생합니다. 즉, IllegalStateException이 발생합니다. 새 액티비티를 시작하면 해당 액티비티의 onSaveInstance()가 호출되기 때문입니다. 그것의 부름 후, 그 활동의 backstack 내용을 수정하는 것이 허용되지 않습니다. 그래서 다른 해결책을 찾았습니다.

다른 탭에서 일부 이벤트가 발생하면 TabActivity의 로컬 활동 관리자에서 다른 탭 활동을 제거하십시오. 따라서 나머지 탭으로 이동하면 LocalActivityManager에서 해당 활동을 찾으려고 시도합니다. 우리가 그 액티비티들을 제거함에 따라, 그들은 매니저로부터 그 액티비티들을 얻지 못했습니다. 따라서 활동을 다시 시작합니다. 스택을 지우는 동작을 제공합니다.

0

당신은이 플래그가 활동을 죽일 것이다

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

활동에 다음 플래그를 설정하고 다시을 TabSpec에

을 누르면 다시 시작할 수 있습니다
관련 문제