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

Android Studio - Fragment 와 Activity 연결

by Cong_S 2022. 7. 27.

앞선 포스팅을 통해 BottomNavigationView 사용할 준비를 마친 다음

https://cong-s.tistory.com/263

 

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

레이아웃 화면에서 BottomNavigationView 끌어다 놓기 위와 같은 화면이 안 뜨고 로딩만 되는 거 같을 때, 디자인 화면이 안 뜰 때는 프로젝트를 껐다가 다시 열어보자. 위 화면이 뜨고 필요한 라이브

cong-s.tistory.com

 

 

실제 연결하는 코드는 다음과 같다.

public class MainActivity extends AppCompatActivity {

    // 멤버 변수 할당
    BottomNavigationView navigationView ;

    Fragment firstFragment;
    Fragment secondFragment;
    Fragment thirdFragment;
    Fragment forthFragment;

    @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();
        forthFragment = new ForthFragment();

        // 실제 연결 부분
        navigationView.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                
                // itemId 객체 생성
                int itemId = item.getItemId();
                
                // Fragment 변수 생성
                Fragment fragment = null;
                
                // 실제 item과 연결
                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();
                } else if(itemId == R.id.forthFragment){
                    fragment = forthFragment;
                    getSupportActionBar().setTitle("내 정보");
                    getSupportActionBar().show();
                }
                // 로드.
                return loadFragment(fragment);
            }
        });

    }
    
    // 로드 loadFragment 메소드 정의
    private boolean loadFragment(Fragment fragment) {
        if(fragment != null){
            getSupportFragmentManager()
                    .beginTransaction()
                    .replace(R.id.fragment, fragment)
                    .commit();
            return true;
        }
        return false;
    }
}

댓글