Development/Android
[Android] Fatal Exception: java.lang.NoSuchMethodException: com.~~~.Widget.<init> []
SeungYong.Lee
2025. 6. 19. 12:18
반응형
- 위젯 갱신을 위한 refresh 함수에서 생성자 접근 시에 발생했다.
val widgetInstance = widgetClass.getDeclaredConstructor().newInstance()
- 위젯 클래스를 생성자 없는 object로 선언하고, 생성자 접근 코드를 제거하여 refresh 함수를 수정했다.
object MemoListWidget : GlanceAppWidget() {
fun updateAll(context: Context) {
CoroutineScope(Dispatchers.IO).launch {
val manager = GlanceAppWidgetManager(context)
val now = System.currentTimeMillis()
widgetList.forEach { (widgetInstance, stateKey) ->
val glanceIds = manager.getGlanceIds(widgetInstance::class.java)
glanceIds.forEach { glanceId ->
updateAppWidgetState(context, PreferencesGlanceStateDefinition, glanceId) {
it.toMutablePreferences().apply {
this[stateKey] = now
}
}
widgetInstance.update(context, glanceId)
}
}
}
}
반응형