250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- intent
- drift
- textview
- livedata
- DART
- scroll
- Compose
- 계측
- activity
- 테스트
- LifeCycle
- 앱바
- data
- 앱
- appbar
- Kotlin
- binding
- Coroutines
- tabbar
- TEST
- 안드로이드
- Button
- ScrollView
- Navigation
- viewmodel
- Dialog
- android
- Flutter
- textfield
- CustomScrollView
Archives
- Today
- Total
Study Record
[안드로이드] navigation 참고사항 본문
728x90
😶 탐색하는 fragment 에 따라 app bar title 변경하기
activity 하나에 여러 fragment 를 탐색할 때 app bar 의 title 을 자동으로 변경할 수 있는 함수를 제공한다. (Activity)
바로 setupActionBarWithNavController() 함수이다.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val navFragment = supportFragmentManager
.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
setupActionBarWithNavController(navFragment.navController)
}
}
app bar 의 title 은 nav Graph 의 android:label 이름과 같다.
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@id/startFragment">
<fragment
android:id="@+id/startFragment"
android:name="com.example.cupcake.StartFragment"
android:label="@string/app_name"
tools:layout="@layout/fragment_start">
// ...
</fragment>
//...
</navigation>
😶 앱바의 뒤로가기 버튼과 Navigation 연결
onSupportNavigateUp 메서드로 앱바의 뒤로가기 버튼과 연결할 수 있다.
class MainActivity : AppCompatActivity() {
private lateinit var appBarConfiguration: AppBarConfiguration
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val navFragment = supportFragmentManager
.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
appBarConfiguration = AppBarConfiguration(navFragment.navController.graph)
// 앱바의 경우
setupActionBarWithNavController(navFragment.navController)
// ToolBar 의 경우
// binding.toolbar.setupWithNavController(navController, appBarConfiguration)
}
override fun onSupportNavigateUp(): Boolean {
val navController = findNavController(R.id.nav_host_fragment)
return navController.navigateUp(appBarConfiguration)
|| super.onSupportNavigateUp()
}
}
728x90
'안드로이드' 카테고리의 다른 글
[안드로이드] 데이터 바인딩(Data Binding) 참고사항 (0) | 2023.08.02 |
---|---|
[안드로이드] ViewModel 참고사항 (0) | 2023.08.02 |
[안드로이드] ViewModel 과 LiveData & Data Binding (0) | 2023.07.28 |
[안드로이드] Dialog 정리 (0) | 2023.07.26 |
[안드로이드] 메뉴 만들기 (0) | 2023.07.20 |