본문 바로가기
  • 콩's 코딩노트
Android

Android Studio - BottomNavigationView 사용하기 (.With Navigation Component)

by Cong_S 2022. 7. 27.

레이아웃 화면에서 BottomNavigationView 끌어다 놓기

 

위와 같은 화면이 안 뜨고 로딩만 되는 거 같을 때, 디자인 화면이 안 뜰 때는 프로젝트를 껐다가 다시 열어보자. 

위 화면이 뜨고 필요한 라이브러리 설치가 되야한다.

 

 

새 프래그먼트 추가!

 

 

레이아웃화면에서 NavHostFragment를 BottomNavigationView 에 끌어다 줌.

 

fragmentContainerView를 BottomNavigationView 와 동급으로 맞추고 

above를 BottomNavigationView 으로 설정.

 

각 Fragment 화면을 구성. 액티비티와 연결된 레이아웃 화면과 똑같이 편집하면 된다. (같은 xml 파일)

 

메뉴 생성.

 

item 끌어다가 Menu 구성.

 

BottomNavigationView에  menu 연결.

 

탭을 눌렀을 때의 화면은 맞춰주지 않았으므로 현재 화면이 정상.

 

맨 처음 시작할 때의 화면은 다음 코드 수정하면 됨.

 

메인 액티비티에서 연결 코드

public class MainActivity extends AppCompatActivity {

    BottomNavigationView navigationView ;

    Fragment firstFragment;
    Fragment secondFragment;
    Fragment thirdFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 보통 내비게이션바 부분이 있는 앱의 경우 상단의 액션바는 감춘다.
        getSupportActionBar().hide();

        // 화면 연결
        navigationView = findViewById(R.id.bottomNavigationView);

        // itme select 로 메뉴를 누르면 화면이 바뀌도록 설정.
        // 먼저 객체 생성.
        firstFragment = new FirstFragment();
        secondFragment = new SecondFragment();
        thirdFragment = new ThirdFragment();

        // 실제 연결 부분 - 코드 업데이트 예정
        navigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {

                int itemId = item.getItemId();

                Fragment fragment = null;

                if(itemId == R.id.firstFragment){
                    fragment = firstFragment;
                    getSupportActionBar().setTitle("홈");
                    getSupportActionBar().show();
                } else if(itemId == R.id.secondFragment){
                    fragment = secondFragment;
                    getSupportActionBar().setTitle("게시판");
                    getSupportActionBar().show();
                } else if(itemId == R.id.thirdFragment){
                    fragment = thirdFragment;
                    getSupportActionBar().setTitle("설정");
                    getSupportActionBar().show();
                }
                return loadFragment(fragment);
            }
        });

    }

    private boolean loadFragment(Fragment fragment) {
        if(fragment != null){
            getSupportFragmentManager()
                    .beginTransaction()
                    .replace(R.id.fragment, fragment)
                    .commit();
            return true;
        }
        return false;
    }
}

 

댓글