전체(111)
-
Navigation
- 구성요소 Navigation Graph : navigation 정보를 담은 xml 파일 NavHost : Navigation Graph의 목적지를 보일 빈 컨테이너 NavController : NavHost 안에서 navigation을 관리 - Navigation Graph 설계 1. Destination 추가 1-1. Fragment 1-2. DialogFragment ... ... 1-3. Activity : 기본적으로 Navigation Graph는 ActivityScope에서 유효하므로, Activity Destination 추가는 현재 그래프의 endpoint로 사용됨 - startActivity()와 같은 맥락 - 암시적 Intent와 같은 맥락 : 찾지 못한 경우, ActivityNotF..
2022.04.19 -
[ERROR/EXCEPTION] java.lang.IllegalStateException: onAttach called multiple times with different Context! Hilt Fragments should not be retained.
java.lang.IllegalStateException: onAttach called multiple times with different Context! Hilt Fragments should not be retained. at dagger.hilt.internal.Preconditions.checkState(Preconditions.java:83) at com.example.kotlinstudy.pesentation.tobe.launch.my.Hilt_MyFragment.onAttach(Hilt_MyFragment.java:58) Note: Do not use the instance multiple times. If you consume this instance in onCreate on a par..
2022.04.08 -
Compose 부모 영역 안에 꽉 채우기
Item마다 특정형태가 반복되는 리스트를 만들기 위해서 Row영역을 잡고 그 안에 Column영역과 Icon 영역을 잡았다. Column영역은 두 개의 Text가 있다. 처음에 Text 영역이 짧은 경우, Text 두 개와 Column, Icon 모두 fillMaxWidth()를 해도 무방했으나(기억이 잘못됐나 Column까지 fillMaxWidth()이면 Icon이 사라지는 것으로 보아 Column은 IntrinsicSize.MAX를 적용했던거 같기도..), Text 영역이 길어지니 Icon이 사라지는 문제가 발생했다. 이 경우에는 fillMaxWidth()는 최상단 composable에만 적용하고, Icon은 최소 너비를 갖도록 설정, Text 두 개를 가진 Column 영역은 너비 설정없이 weig..
2022.04.07 -
Compose Modifier 가로/세로
Modifier에서 제공되는 가로/세로를 설정 - fillMaxWidth/Height(fraction) : 부모의 크기와 상관없이 전체 영역을 잡음, fraction은 차지할 비율 - Width/Height(dp) : dp를 설정해 직접 크기 설정, 여기서 Intrinsic이라는 값을 줄 수도 있음 Intrinsic이란 부모는 자식을 한번만 measure 할 수 있기 때문에 자식의 값으로 가로/세로를 결정하기 위한 값 Intrinsic.MAX는 자식의 가로/세로 중 가장 큰 값으로 설정 Intrinsic.MIN은 자식의 가로/세로 중 가장 작은 값으로 설정 부모의 Height 설정없이 자식이 fillMaxHeight를 설정한 경우 부모가 Intrinsic.MIN 설정 후 자식이 fillMaxHeight를..
2022.04.07 -
Compose Column & Row
Column : composable을 세로로 배치 Row : composable을 가로로 배치 각 scope은 Modifier.Alignment에서 제약이 발생 ColumnScope은 composable이 세로로 배치되므로, horizontal align만 조정 가능 RowScope은 composable이 가로로 배치되므로, vertical align만 조정 가능 composable을 겹치게 배치하고 싶다면 Column & Row를 사용하지 않고, 바운더리를 지정할 때 Box로 바꿔주면 됨 @OptIn(ExperimentalPagerApi::class) @Composable fun prodHome(viewModel: ProdViewModel) { val prodListState by viewModel.p..
2022.04.07 -
Kotlin Flow
flow : coroutine에서 여러 데이터를 순차적으로 내보낼 수 있는 데이터 스트림(지속적으로 데이터를 발행) 형식 * suspend function은 하나의 데이터만 반환 가능 cold : collect() 호출 없이는 데이터 방출하지 않음 cancellation : 자체 취소는 불가능하지만, coroutine을 취소하면 자동으로 됨 구성요소 Producer : 데이터를 생산해 stream에 추가 비동기적 실행 가능 해당 포지션은 UI에서도 가능함(ex> user input events) Intermediary : 데이터 혹은 stream 자체를 가공 Consumer : stream의 데이터를 소비 Producer - Flow builder flow{} : emit()을 호출하여 수동적으로 flo..
2022.03.25