내 앱에서 특정 일이 발생하면 새로 고침 버튼을 사용/사용 중지하려고하지만 알아낼 수없는 널 포인터 예외가 발생합니다. 상황에 따라 부울 addingRefresh
또는 removingRefresh
을 true로 설정 한 다음 invalidateOptionsMenu()
을 호출하여 단추를 사용하거나 사용하지 않도록 설정했지만 메뉴 항목은 null로 반환됩니다. 나는 이것이 왜있을 수 있지만 아무것도 찾을 수없는 이유에 대해 인터넷을 검색했습니다. (invalidateOptionsMenu()가 호출 될 때 호출) onCreateOptionsMenu()
에 대한menu.findItem (R.id. *)이 null입니다. - Android
코드 어떤 도움
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (addingRefresh) {
//below line as well as other similar line cause exceptions
menu.findItem(R.id.action_refresh).setEnabled(true);
addingRefresh = false;
} else if (removingRefresh) {
menu.findItem(R.id.action_refresh).setEnabled(false);
removingRefresh = false;
} else if (addingLoading) {
}
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions, menu);
return super.onCreateOptionsMenu(menu);
}
감사합니다! 도움이
private MenuItem mMenuItem;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
final MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_activity_actions, menu);
mMenuItem = menu.findItem(R.id.action_refresh)
return true;
}
private void setMenuItemEnabled(boolean enabled) {
mMenuItem.setEnabled(enabled);
}
희망 :
onPrepareOptionsMenu()를 팽창 후
를 사용해야합니다 가 호출된다; onCreateOptionsMenu()는 한 번만 호출됩니다. –또한 항목을 찾으려고하면 메뉴가 팽창합니다. 그것은 좋을 수 없다. 1 초, 그리고 나는 더 철저한 대답을 게시 할 것이다. –
onCreateOptionsMene()에서 정확한 시간에 해당 코드 행을 실행 했으므로 어떻게 든 호출되어야합니다 ... onPrepareOptionsMenu()를 사용하려고합니다 감사합니다! – ravensgo