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

bottom 네비게이션바 질문

0 추천
프레그먼트에서 onFragmentChange로 프래그먼트 이동하는경우

 

mainactivity의 하단바에 클릭이벤트처럼 적용하려면 어떻게 해야하나요?
enerigpy (2,110 포인트) 님이 2023년 3월 13일 질문
onFragmentChange 라는 메소드는 SDK에는 존재하지 않는 것 같은데요. 어디서 나온 메소드인가요?
그리고 mainactivity의 하단바에 클릭이벤트처럼 적용하려면 어떻게 해야하나요?
라는 게 무슨 의미인가요? 이미 클릭이벤트처럼 동작을 하고 있는데요.

1개의 답변

0 추천
 
채택된 답변

BottomNavigationView는 별도의 리스너가 존재하므로 그걸 사용하세요. 기존 코드를 재활용하면 아래와 같은 형태가 될 것 같네요.

bottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
         onFragmentChanged (item.getItemId());
    }
});

...

private void onFragmentChanged(int menuId) {
       Fragment destnation;
       switch (menuId) {
            case R.id.main_fragment:
                destnation = mainFragment
                break;
            case R.id.menu_fragment:
                destnation = menuFragment
                break;
            default:
               return;
        }

        getSupportFragmentManager()
              .beginTransaction()
              .replace(R.id.container, destnation)
              .commit();
    }

 

spark (224,800 포인트) 님이 2023년 3월 13일 답변
enerigpy님이 2023년 3월 14일 채택됨
이게 액티비티에서 말고 프레그먼트에서 가능한 코드인건가요?
getSupportFragmentManager()는 Fragment에서는 바로 접근할 수 없고
getActivity().getSupportFragmentManager() 또는 requireActivity().getSupportFragmentManager() 를 통해 접근하셔야 합니다. getActivity()는 Nullable을 requireActivity()는 NonNull 을 리턴하므로 라이프사이클에 따라 적절한 것을 사용하시기 바랍니다. 나머지 코드는 액티비티나 프래그먼트나 동일하게 사용할 수 있을 겁니다.
그리고 Fragment는 복잡한 컴포넌트입니다. 따라서 개발자문서를 꼭 읽어보셔서 기본적인 사용법을 숙지하시기를 권장합니다.

https://developer.android.com/guide/fragments/fragmentmanager
...