본문 바로가기

개발/안드로이드20

HiltWorker사용시 Could not create Worker 오류 해결 Hilt로 WorkManager를 Inject하려면 WorkerFactory를 만들어서 넘겨줘야한다. @HiltAndroidApp class ExampleApplication : Application(), Configuration.Provider { @Inject lateinit var workerFactory: HiltWorkerFactory override fun getWorkManagerConfiguration() = Configuration.Builder() .setWorkerFactory(workerFactory) .build() } workManager 2.6.0-alpha01부터는 startup을 사용해 초기화하기 때문에 AndroidManifest에서 startup을 사용하지 않게 변경하거.. 2022. 12. 13.
국가별 날짜 시간 패턴 가져오기 우리나라는 대부분의 경우 년/월/일의 순서로 표기하지만 미국은 월/일/년의 순서로 표기한다. 이렇게 국가마다 날짜와 시간의 포멧이 다고 숫자 사이에 단위도 그 나라의 문자를 사용해야 하기 때문에 API에서 제공하는 포멧터을 사용해서 변환하는 것이 좋다. 사용 방법은 포멧터로 날짜나 시간을 넘기고 SHORT, MEDIUM, LONG, FULL 등의 스타일을 넘기면 된다. 그런데 스타일이 아니라 구체적인 포멧(예: yyyyMMdd)을 가져와 사용해야 한다면 다음 메서드를 사용하면 된다. DateTimeFormatterBuilder.getLocalizedDateTimePattern( FormatStyle dateStyle, FormatStyle timeStyle, Chronology chrono, Locale.. 2022. 12. 7.
Room의 DAO에서 suspend를 사용하려할 때 Not sure how to convert a Cursor to this method's return type @Dao interface UserDao { @Query("SELECT * FROM user") suspend fun get(id: String): User } suspend를 사용해 컴파일하려고 보니 아래와 같은 오류가 발생한다. Not sure how to convert a Cursor to this method's return type (java.lang.Object). public abstract java.lang.Object get(@org.jetbrains.annotations.NotNull() 안드로이드 플러그인 1.7.0 버전과 Room 2.4.2 버전을 사용할 때 발생고, 플러그인 버전을 1.6.21로 변경해서 해결했다. plugins { id 'org.jetbrains.kotlin.an.. 2022. 6. 28.
안드로이드 스튜디오 범블비에서 에뮬레이터를 독립적으로 실행하려면 범블비 버전부터 에뮬레이터가 안드로이드 스튜디오의 툴 윈도우로 표시된다. 음...이유가 있겠지만 사용하던 습관이 있어 불편하다. 옛날처럼 별개의 프로세스로 실행하려면 File -> Settings -> Tools -> Emulator -> Launch in a tool window 의 체크박스를 해제한다. 2022. 1. 29.