본문 바로가기 메뉴 바로가기

코모스튜디오

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

코모스튜디오

검색하기 폼
  • 분류 전체보기 (273)
    • 코모 어플리케이션즈 (68)
      • 말하는 알람 시계 (42)
      • 말하는 일상 카운터 (3)
      • 말하는 타이머 스톱워치 (1)
      • 말하는 시계 (13)
      • SpeakingAlarmClock (0)
      • 번갯불 (2)
      • 빠른 손전등 (2)
      • 일정 브리핑 알람 (2)
    • [안드로이드 공부] (181)
      • 코틀린 (7)
      • 선플라워 디비보기 (6)
      • 안드로이드 스튜디오 (29)
      • 프리퍼런스 (11)
      • 안드로이드 공부 (30)
      • 프래그먼트 (7)
      • 동기화 (12)
      • 액티비티 (8)
      • UI (47)
      • 미디어 (2)
      • 알림 (8)
      • 서비스 (3)
      • 애드 (9)
      • 테스트 (1)
    • [애플] (0)
    • [IT 뉴스] (18)
      • 모바일 (10)
      • 과학 (5)
      • 인터넷 (3)
    • [엔터테이먼트] (1)
      • 영화 (1)
    • 기타 (2)
  • 방명록

kotlin (6)
null cannot be cast to non-null type androidx.appcompat.widget.appcompatimagebutton

findViewById(R.id.header_settings_button) as AppCompatImageButton Null -> Non Null로 캐스팅 해서 발생하는 에러 findViewById(R.id.header_settings_button) as AppCompatImageButton? ? 하나로 간단하게 해결.

[안드로이드 공부]/코틀린 2020. 8. 22. 16:33
smart cast to is impossible because is a mutable property that could have been changed by this time

변경될 수 있는(mutable/var) 타입을 캐스팅 할 경우 문제가 생긴다. 이 경우에는 val 불변 타입으로 새로운 변수에 할당 한 뒤에 캐스팅을 해야 한다. private val plantDetailViewModel: PlantDetailViewModel by viewModels { InjectorUtils.providePlantDetailViewModelFactory(requireActivity(), args.plantId) } val binding = DataBindingUtil.inflate( inflater, R.layout.fragment_plant_detail, container, false ).apply { viewModel = plantDetailViewModel //error bea..

[안드로이드 공부]/코틀린 2020. 8. 7. 17:54
[MVVM] LiveData와 ViewModel Observer로 연결

Repository의 Data가 변경 되었을 때 UI에 알리기 위해서는 ViewModel이 관찰을 하고 있어야 한다. UI(V)는 보통 onCreate()에서 VM을 생성하고, VM은 Repository를 생성한 뒤 M과 Dao를 통해 연결 되는데, 이 Dao를 LiveData로 구성하면 ViewModel이 지켜 볼 수(obsever) 있게 된다. 연결(MVVM) onCreate/onCreateView 실행이 되면서 viewModel 생성 작업과 이후 연결 작업이 실행 된다. Fragment.kt private val plantDetailViewModel: PlantDetailViewModel by viewModels { InjectorUtils.providePlantDetailViewModelFacto..

[안드로이드 공부]/코틀린 2020. 8. 7. 17:01
[Sunflower 디비보기] 데이터 바인딩과 HtmlCompat.fromhtml

TextView 에 Html 형식으로 글자를 바꿀 수 있다. 데이터 바인딩을 통해 바인딩 어뎁터(BindingAdapter)로 연결하면 간단하게 구현 할 수 있다. @BindingAdapter("renderHtml") fun bindRenderHtml(view: TextView, description: String?) { if (description != null) { view.text = HtmlCompat.fromHtml(description, FROM_HTML_MODE_COMPACT) view.movementMethod = LinkMovementMethod.getInstance() } else { view.text = "" } } 입력) plant.description = 동해물과 백두산이(from..

[안드로이드 공부]/선플라워 디비보기 2020. 7. 29. 11:58
[Sunflower 디비보기] ViewModel 주입(초기화) 과정

요약 viewModel 주입(Injection) Repository 와 ViewModel 을 생성 해서 Factory 에 넣은 다음 by 로 위임된 viewModels 에 주면 viewModel 을 주입해준다.(ktx 로 ViewModelProvider.get()와 같은 역활을 한다.) 결국 viewModel (LiveData) > repository > dao > db 요렇게 연결 되어서 view 와 연결되어 작업이 될 것 이다. M-V-VM private val viewModel: GardenPlantingListViewModel by viewModels { InjectorUtils.provideGardenPlantingListViewModelFactory(requireContext()) } Fact..

[안드로이드 공부]/선플라워 디비보기 2020. 7. 28. 16:31
코틀린 Scope; apply, also, run, with, let

Scope 함수는 인스턴스의 속성, 함수를 영역내에서 분리해서 사용 할 수 있다. 깔끔하고, 가독성을 높여 준다. apply / also 인스턴스 반환 run(with) /let 최종값 반환 apply 인스턴스(클래스)를 생성한 후 변수에 담기 전 초기화 과정을 수행 할 때 인스턴스 생성 후 .apply{ } 스코프 내에서 인스턴스의 .이름 없이 바로 사용 가능 즉, 인스턴스 생성 하고, 변수에 변경되거나 초기화 값을 넣은 다음 할당 하게 된다. class Book(var title: String, var number:Int){} var a = Book("a", 5).apply{ title = "abcde" + name} 인스턴스가 그대로 반환 된다 run apply 와 같으나, 마지막 구문이 반환 된다..

[안드로이드 공부]/코틀린 2020. 7. 23. 16:02
이전 1 다음
이전 다음
공지사항
최근에 올라온 글
  • Caused by: android.view.⋯
  • viewpager 사용 시 하단⋯
  • fragment container view⋯
  • Resources$NotFoundExcept⋯
최근에 달린 댓글
  • 안드로이드 10 인데 위 코드⋯
  • 제보 : https://horae.tistor⋯
  • 잘 안쓰는데 감사 인사 re:⋯
  • 안녕하세요. 좋은 말씀 감사⋯
Total
411,605
Today
82
Yesterday
106

Blog is powered by Tistory / Designed by Tistory