일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 리사이클러뷰
- 안드로이드13
- espresso
- IntentTestRule
- ActivityTestRule
- 뷰변경 감지
- 구분선
- Fragment에서 Activity의 함수 사용하기
- 재사용
- 안드로이드스튜디오
- 안드로이드개발레벨업교과서
- Android
- fragment
- 생명주기
- 코딜리티
- viewholder
- LayoutManger
- 테마 아이콘
- searchview
- binding adapter
- high order function
- Fragment 수동 추가
- 고차함수
- ui test
- 코틀린
- adapter
- 스와이프
- Error:Execution failed for task ':app:mergeDebugResources'
- 안드로이드
- recyclerview
Archives
- Today
- Total
룬아님의 취중코딩
Koin으로 Dialog 사용하기 본문
앱을 제작할 때에 로딩 다이얼로그 같은 것들은 거의 모든 화면에서 네트워크 통신 중에 사용됩니다.
저는 Koin으로 의존성을 주입하고 dialog를 사용하려고 하였습니다.
Application을 상속받아 startKoin을 선언하고
startKoin {
androidLogger()
androidContext(this@MyApplication)
modules(module)
}
매니페스트의 application name도 바꿔줍니다
<application
android:name=".MyApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
모듈을 선언할 때에 context로 androidContext()를 사용한다면
Unable to add window -- token null is not for an application 에러가 발생하게 됩니다.
2019/08/05 - [개발/안드로이드 개발] - 다이얼로그에 왜 application context를 사용하면 안될까?
factory {
AppCompatDialog(androidContext())
.apply {
setCancelable(false)
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
setContentView(R.layout.dialog_loading)
val animationView = this.iv_frame_loading
animationView.setAnimation("loading.json")
animationView.repeatCount = LottieDrawable.INFINITE
animationView.playAnimation()
}
}
그렇기 때문에 저는 Context를 해당 엑티비티에서 인자로 받아오도록 구현하였습니다.
factory module: Module = module {
single { (context: Context) ->
AppCompatDialog(context)
.apply {
setCancelable(false)
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
setContentView(R.layout.dialog_loading)
val animationView = this.iv_frame_loading
animationView.setAnimation("loading.json")
animationView.repeatCount = LottieDrawable.INFINITE
animationView.playAnimation()
}
}
}
그리고 BaseActivity를 만들고 그 안에 아까 만들었던 AppCompatDialog를 주입해 주었습니다.
또한 parametersOf를 사용하여 activity의 context를 넘겨주었습니다.
val progressDialog: AppCompatDialog by inject { parametersOf(this) }
반응형
'개발 > 안드로이드 개발' 카테고리의 다른 글
Searchview가 있는 화면 입장 시에 자동으로 키보드 올리기 (0) | 2019.08.27 |
---|---|
Error:Execution failed for task ':app:mergeDebugResources'. (0) | 2019.08.20 |
Recyclerview의 보여지는 뷰의 index 변화를 알려주는 Listener (1) | 2019.08.13 |
Android RecyclerView 어댑터에서 필터 후 원래 항목 위치를 얻는 방법 (0) | 2019.08.05 |
다이얼로그에 왜 application context를 사용하면 안될까? (1) | 2019.08.05 |
Comments