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)
            }
        }
    }
}

 

반응형