본문 바로가기
공부/Android Studio

[Android Studio/Kotlin] fragment 사용법 2 (Action bar 뒤로가기)

by 웅대 2022. 11. 30.
728x90
반응형

이전 포스팅에서 fragment를 교체하는 방법에 대해서 공부하였다.

 

이전 포스팅에서는 이전 fragment로 돌아가기 위해서는 스마트폰의 뒤로가기 버튼을 눌렀어야 했다.

 

이제는 상단에 뒤로가기 버튼을 만들어서 뒤로갈 수 있게끔 해보려 한다.

 

이를 위해서 ActionBar를 설정해야한다.

 

그 전에 메인 액티비티의 프래그먼트 화면에 접근해야 하므로 container라는 아이디를 주었다.

이제 메인 액티비티에 binding을 설정하고 onCreate 함수에 다음 코드 한 줄을 추가하면 액션 바가 만들어진다.

setupActionBarWithNavController(binding.container.getFragment<NavHostFragment>().navController)

그리고 액션 바의 뒤로가기 버튼을 클릭했을 때 뒤로 갈 수 있도록 해야하므로 

 

onSupportNavigateUp 함수를 오버라이딩하여 다음 코드를 추가한다.

override fun onSupportNavigateUp(): Boolean {
    return binding.container.getFragment<NavHostFragment>().navController.navigateUp()||super.onSupportNavigateUp()
}

그리고 navigation 디렉토리 안의 xml 파일에서 fragment들의 label을 지정해준다.

 

액션 바에 출력될 fragment 이름을  설정하는 것이다.

 

 

설정한 label과 뒤로가기 버튼이 작동하는 것을 확인할 수 있다.

 

메인 액티비티 전체 코드

class MainActivity : AppCompatActivity() {
    lateinit var binding:ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding=ActivityMainBinding.inflate(layoutInflater)
        setupActionBarWithNavController(binding.container.getFragment<NavHostFragment>().navController)
        setContentView(binding?.root)
    }

    override fun onSupportNavigateUp(): Boolean {
        return binding.container.getFragment<NavHostFragment>().navController.navigateUp()||super.onSupportNavigateUp()
    }
}

다음 포스팅은 fragment 내부 버튼이 아니라 하단에 bottom navigation을 설정하여 fragment를 교체하는 방법에 대해서 공부해보려 한다.

728x90
반응형

댓글