마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

onNavigationItemSelected() 함수 반환값 질문

0 추천
onNavigationItemSelected( ) 함수에서 반환값 treu와 false의 차이가 뭔가요 navigationView 에서 메뉴 클릭시 토스트를 띄우게 테스트를 해봤는데 true false 둘다 정상 작동하네요..
songjae5426 (1,800 포인트) 님이 2023년 1월 31일 질문

1개의 답변

0 추천
 
채택된 답변

안드로이드 SDK는 해당 코드를 아래처럼 가져다 쓰게 될 겁니다.

if (app.onNavigationItemSelected()) {
   // 사용자앱에서 네비게이션 메뉴가 선택되었을 때의 동작
} else {
   
// 사용자앱에서 네비게이션 메뉴가 선택되었지 않았을 때의 동작
}

만약 onNavigationItemSelected에서 false 를 리턴한다면 두번째 블록의 코드가 실행이 되겠죠. 따라서 시스템이 메뉴가 선택된 후의 동작을 하게 하려면 true, 그렇지 않으면 false를 리턴하도록 하면 될 겁니다. 구체적으로 시스템이 어떤 동작을 하는지도 보려면 SDK 소스코드를 살펴봐야 겠죠.

spark (226,420 포인트) 님이 2023년 1월 31일 답변
songjae5426님이 2023년 2월 2일 채택됨
혹시 내부 소스코드 보는법 알려주실수있을까요..?
NavigationView.OnNavigationItemSelectedListener의 onNavigationItemSelected를 선택하신 다음,  Find Usage를 하시면 됩니다. (저는 단축메뉴가 다르네요. Edit > Find Usage, 또는 마우스 오른쪽 버튼 > Find Usage)
하시면 어디에서 사용하는지 나옵니다. 찾아보면
NavigationView의 아래코드에서 사용하고 있네요.
this.menu.setCallback(
        new MenuBuilder.Callback() {
          @Override
          public boolean onMenuItemSelected(MenuBuilder menu, MenuItem item) {
            return listener != null && listener.onNavigationItemSelected(item);
          }

          @Override
          public void onMenuModeChange(MenuBuilder menu) {}
        });

연결된 코드도 이런 식으로 찾아보시면 되겠죠.
...