5

나는 각기 고유 한 활동 인 4 개의 탭이있는 TabActivity을 가지고 있습니다. 각 탭은 자신의 onCreateOptionsMenu을 정의합니다 (경우에 따라 onPrepareOptionsMenu). 각 탭이로드되면 AsyncTask이 시작되어 해당 탭의 목록을 채우는 데 필요한 데이터를 검색합니다.Android의 이상한 옵션 메뉴 동작 TabActivity

탭이 매우 빠르게 (아직로드 중일 때) 전환 한 다음 (현재 탭의 AsyncApiTask이 계속 실행되는 동안) 메뉴 버튼을 누르면 잘못된 옵션 메뉴가 표시 될 수 있습니다.

예를 들어, FooActivity (표 1)은 "새로 고침"항목을 가지고있는 옵션 메뉴를 가지고 가정 해 봅시다, 그리고 BarActivity (탭 2)은 "보기"항목과 옵션 메뉴가 있습니다. 탭 1이 활성화 된 상태로 앱을 시작하고 빠르게 탭 2로 전환 한 다음 메뉴를 누르면 예상되는 '모두보기'항목보다는 '새로 고침'항목이 표시됩니다.

또한이 이상한 동작은 첫 번째 메뉴 누름에서 가끔 발생하지만 나중에 누를 때마다 "멈춤"상태가되고 탭을 전환 할 때까지 모든 항목에서 잘못된 항목이 표시됩니다.

어떤 일이 벌어 질 수 있는지 알고 싶습니다. 전에 이런 일에 대해 들어 본 적이 없으며 좋은 제안을 찾을 수 없었습니다.

+0

이것은 활동을 탭의 내용으로 사용하는 것을 싫어하는 이유의 겉으로보기에는 무한한 목록 중 하나입니다. 탭을 단순하게 만드십시오. * 활성 탭에 기반한 구현에 * on * onPrepareOptionsMenu()를 위임하십시오. – CommonsWare

+0

아, 훌륭하게, 나는이 일을 무섭게 잘못하고있는 것이 아니라는 것을 아는 것이 매우 위안이된다. 나는이 해결책을 고려할 것이다. 감사! – jakeboxer

답변

0

예, CommonsWare 제안이 더 좋은 해결책입니다! 각 탭에 대해 FragmentTabHost 및 조각을 사용할 수도 있습니다. 그러면 호스트 활동이 onTabChanged(String tab)에서 옵션 메뉴를 중앙에서 업데이트 할 수 있습니다.

AsyncTaskActivity에서 생성되지만 onPostExecute(...)을 실행하지 않으면 계속 진행됩니다. 또한, 기본 동작이 AsyncTask이기 때문에 (다양한 버전의 안드로이드가 순차적/병렬 적으로 실행됩니다), 자신의 제어 없이는 ThreadPoolExecutor 없이는 제어하기가 어렵습니다. 귀하의 빠른 Activity 전환 및 반복 AsyncTask가 차단하는 것 같습니다.