更改设备语言后小部件单击不起作用

Posted

技术标签:

【中文标题】更改设备语言后小部件单击不起作用【英文标题】:Widget click not working after changing device language 【发布时间】:2015-12-17 20:44:00 【问题描述】:

我有一个带有 2 个 TextView 的简单小部件,在它的 onUpdate() 中:

 PendingIntent pendingIntent =  IntentUtils.getClockWidgetProviderPendingIntent(context);
 views.setOnClickPendingIntent(R.id.timeText, pendingIntent);

效果很好,但是当用户更改设备语言时,他们无法再单击小部件(直到重新启动设备)。

任何想法是什么问题? 谢谢。

【问题讨论】:

【参考方案1】:

您是否在代码的其他地方使用了 updateAppWidget 调用? 你应该总是在每次调用updateAppWidget 之前调用setOnClickPendingIntent,或者你可以使用public void partiallyUpdateAppWidget (int appWidgetId, RemoteViews views),因为

“请注意,由于这些更新未缓存,因此在使用 AppWidgetService 中的缓存版本恢复小部件的情况下,它们修改的任何未通过 restoreInstanceState 恢复的状态都不会持续存在。”

因此,每当用户旋转设备或更改语言时,小部件都会重置为在最新的 updateAppWidget 调用中保留的值。

【讨论】:

以上是关于更改设备语言后小部件单击不起作用的主要内容,如果未能解决你的问题,请参考以下文章

当孩子是芯片小部件时,Flutter MouseRegion 不起作用

通过单击整个小部件来启动活动在 Android Studio 中不起作用

如果在initState()中创建,则Flutter Switch小部件不起作用

关闭应用程序时单击Android应用程序小部件不起作用

dojo - 模板中的单击事件不起作用

更改类后单击功能不起作用