일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알림
- 코틀린
- 알고리즘
- hilt
- kotlin
- Coroutine
- lifecycle
- Navigation
- Android
- ViewModel
- View
- HTTP
- CoordinatorLayout
- recyclerview
- activity
- Behavior
- onMeasure
- 백준
- room
- LiveData
- onLayout
- 안드로이드
- notification
- CustomView
- BOJ
- Algorithm
- sqlite
- AppBarLayout
- DataBinding
- CollapsingToolbarLayout
- Today
- Total
목록삽질 (18)
개발일지
Gson을 사용하여 Number Type을 변경할 때 Int형을 Double로 자동으로 변경하는 경우가 있다. Gson은 Number Type을 기본으로 Double로 변경하기 때문인데 TypeToken을 통해 Type을 지정해주자! Gson().fromJson(json, object : TypeToken() {}.type)
Android에서 ConstraintLayout의 Group 기능을 사용하면 쓸데없는 ViewGroup을 줄일 수 있다. ex) 한번에 여러 View의 Visible를 관리할 때 새로운 ViewGroup을 만들어서 ViewGroup하나로 관리할 수 있지만 쓸데없는 ViewGroup이 늘어나며 성능에 영향을 줄 수 있다. 하지만 ConstraintLayout의 Group 기능을 사용할 경우 Group에 Tag 또는 Id로 View를 매핑하여 쉽게 관리할 수 있다. Group기능을 제대로 사용하기 위해선 매핑되는 View들의 Id가 정의되어야 한다. id를 정의하지 않은 View는 Group의 기능을 제대로 사용할 수 없다.
Android에서 Jetpack Navigation Component를 사용할 때 Global Action을 RecyclerView ViewHolder에서 바로 findNavController를 사용하는 경우 종종 does not have a NavController set Exception이 발생한다. * Dialog에서 RecyclerView를 사용하는 경우 자주 발생한다. itemView.findNavController() 위에 문제를 발생하는 코드를 아래로 고치자. Navigation.findNavController(activity, R.id.nav_host) Hilt를 사용하여 DI 패턴을 적용하면 RecyclerViewAdapter에서 Activity나 Fragment를 쉽게 가져올 수 있다.
Dialog.behavior.state를 STATE_EXPANDED로 바꿔주자! BottomSheetDialogFragment에서 예시 override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { return super.onCreateDialog(savedInstanceState).apply { if (this is BottomSheetDialog) { behavior.state = BottomSheetBehavior.STATE_EXPANDED } } }
false
Android에서 jar파일을 추가하거나 dependency를 추가할 때 이런 오류가 종종 발생한다. Gradle에서 패키징 옵션을 수정하자. android { packagingOptions { exclude 'META-INF/DEPENDENCIES' } }
TextInputLayout을 사용할 때 ExposedDropdownMenu와 MaterialAutoCompleteTextView를 사용하여DropdownMenu를 사용할 때 setSelection을 통해 코드로 Item을 선택할 경우 IndexBoundException이 발생한다. => setText를 사용한다.