2016-10-13 5 views
1

onCreateOptionsMenu() 때 내 활동에서 메뉴 항목 중 하나를 클래스 필드로 저장하고 있습니다.안드로이드에서 타이밍 문제를 해결하는 방법

_myMenuItem = (MenuItem) findViewById(R.id.menu_item); 

는 그러나 onCreate()에 내가 비동기 메서드를 호출하고, 그 결과 내가 메뉴 항목 말했다 참 또는 거짓 표시 여부를 확인해야합니다 여부를 지시한다; 예를 들면 :는

if (someCondition) { 
    _myMenuItem.setVisible(true); 
} 

문제는 메뉴가 널 포인터 예외를 일으키는 팽창 전에 비동기 방식이 완료 때때로 (및 그 위의 코드가 호출된다).

이 타이밍 문제를 어떻게 해결할 수 있습니까? 아무도 좋은 방법을 안다면 onCreateOptionsMenu() 안에 비동기 호출을 두지 않고 이상적입니다. 감사합니다

+0

'비동기 메소드 '를 호출 한 후'Bind first' .... – sushildlh

+0

더 자세히 설명해 주시겠습니까? – b85411

+0

전체 활동 코드를 게시 하시겠습니까? – sushildlh

답변

0

활동에 부울 속성을 선언하십시오. 배경 작업을 완료 한 후 메뉴 항목을 표시하려면 해당 속성을 true로 설정하고 그렇지 않으면 false로 설정하여 메뉴를 다시 표시하십시오 (invalidateOptionsMenu). 새로 고침 옵션 메뉴에서 onPrepareOptionsMenu이 호출됩니다. onPrepareOptionsMenu에서 속성 값을 확인하고 메뉴 항목의 표시 여부를 설정합니다.

관련 문제