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
- notification bar
- Android
- ActivityResultContracts
- App Startup
- LOG
- room
- kdoc-generator
- onResume
- notification setting
- 이미지 gps
- webview
- jsontokotlinclass
- shotcut
- notification
- Blinking
- BottomSheetDialog
- 403 Error
- requestPermission
- Plugins
- application
- skipcollapsed
- navigation component
- ExifInterface
- circlecrop
- itemAnimator
- datastore
- Git
- onReceivedSslError
- ChromeCustomTab
- prettyJson
Archives
- Today
- Total
Debbi Story
Navigation Component data전달하기 본문
728x90
https://developer.android.com/guide/navigation/navigation-pass-data#supported_argument_types
위에 공식 문서에서 data를 전달 할 수 있는 타입을 확인하시고
<fragment
android:id="@+id/detailFragment"
android:name="com.example.app.detailFragment"
android:label="detailFragment" >
<argument
android:name="data"
app:argType="com.example.app.detailFragment.UserInfo[]"/>
</fragment>
이런식으로 data를 전달 받을 fragment에 argument 태그로 추가해줍니다.
사용자정의 타입도 전달 할 수 있고 Array타입으로도 넘길 수 있습니다.
@Parcelize
data class UserInfo(
val name: String,
val age: Int
): Parcelable
사용자정의 타입을 사용할 경우 Parcelable나 Serializable를 구현해야 합니다. 이전에는 Parcelable를 구현하려면 코드가길어지고 복잡했지만 @Parcelize 어노테이션이 코틀린에서 제공해주므로 간단하게 구현이 가능합니다!
그리고 만약 data가 List타입일때
@Suppress("UNCHECKED_CAST")
public actual inline fun <reified T> Collection<T>.toTypedArray(): Array<T> {
@Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN")
val thisCollection = this as java.util.Collection<T>
return thisCollection.toArray(arrayOfNulls<T>(0)) as Array<T>
}
Array로 바꿔주는 toTypedArray 확장 함수가 있습니다!
val args: ConfirmationFragmentArgs by navArgs()
마지막으로 fragment에서 argument를 가져오는 방법입니다. dependencies 추가도 잊지 말아주세요
dependencies {
def nav_version = "2.3.1"
// Java language implementation
implementation "androidx.navigation:navigation-fragment:$nav_version"
implementation "androidx.navigation:navigation-ui:$nav_version"
// Kotlin
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
// Feature module Support
implementation "androidx.navigation:navigation-dynamic-features-fragment:$nav_version"
// Testing Navigation
androidTestImplementation "androidx.navigation:navigation-testing:$nav_version"
// Jetpack Compose Integration
implementation "androidx.navigation:navigation-compose:1.0.0-alpha01"
}
'안드로이드 > Tip' 카테고리의 다른 글
ExifInterface 이미지 위치정보 가져오기 (0) | 2021.09.04 |
---|---|
Glide circle 이미지에 테두리선 그리기 (0) | 2021.07.06 |
Custom Notification bar 만들기 (0) | 2020.10.28 |
Room Insert시 rowId 얻기 (0) | 2020.10.23 |
BottomSheetDialogFragment background 설정하기 (0) | 2020.09.10 |