Android
Navigation Up Button
kldaji
2021. 7. 8. 21:42
※ navigation(R.id.myNavHostFragment)이 구현되어 있다는 가정하에 쓴 글이다.
// ${ActivityName}
class ${ActivityName} : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// binding
val binding = ${ActivityName}Binding.inflate(layoutInflater)
setContentView(binding.root)
// Navigation Up Button
val navController = this.findNavController(R.id.myNavHostFragment)
NavigationUI.setupActionBarWithNavController(this, navController)
}
// Navigation Up Button
override fun onSupportNavigateUp(): Boolean {
val navController = this.findNavController(R.id.myNavHostFragment)
return navController.navigateUp()
}
}
※ 가끔 Up Button을 눌렀을 때와 Back Button을 눌렀을 때 다르게 동작하는 경우가 있는데, 그럴 때에는 Up Button을 Back Button을 눌렀을 때와의 기능을 통일시키면 쉽게 해결할 수 있다.
// ${ActivityName}
class ${ActivityName} : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// binding
val binding = ${ActivityName}Binding.inflate(layoutInflater)
setContentView(binding.root)
// Navigation Up Button
val navController = this.findNavController(R.id.myNavHostFragment)
NavigationUI.setupActionBarWithNavController(this, navController)
}
// Navigation Up Button
override fun onSupportNavigateUp(): Boolean {
val navController = this.findNavController(R.id.myNavHostFragment)
return navController.navigateUp()
}
// Up Button == Back Button
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
android.R.id.home -> {
onBackPressed()
return true
}
}
return super.onOptionsItemSelected(item)
}
}