在setting中设置系统的字体大小,样式,以及系统语言等等会对widget产生影响,造成widget控件失效。

由于在setting中设置系统的字体大小,样式,以及系统语言等等系统发出 android.appwidget.action.APPWIDGET_UPDATE的 广播,

此时的解决方案如下:

自定义的MyAppWidgetProvider继承于AppWidgetProvider,监听android.appwidget.action.APPWIDGET_UPDATE广播

在该类的onReceive()回调方法中,重新注册控件监听。

private void initListener(Context context){AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, MyAppWidgetProvider.class));RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_myprovider);Intent intent;PendingIntent pendingIntent;ComponentName serviceName = new ComponentName(context, MyAppWidgetService.class);/** 刷新按钮 */intent = new Intent(MyAppWidgetService.MSG_REFRESH);intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);intent.setComponent(serviceName);pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);views.setOnClickPendingIntent(R.id.appwidget_refresh_new, pendingIntent);/** 前一页 */intent = new Intent(MyAppWidgetService.MSG_PRE);intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);intent.setComponent(serviceName);pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);views.setOnClickPendingIntent(R.id.appwidget_last, pendingIntent);/** 后一页 */intent = new Intent(MyAppWidgetService.MSG_NEXT);intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);intent.setComponent(serviceName);pendingIntent = PendingIntent.getService(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);views.setOnClickPendingIntent(R.id.appwidget_next, pendingIntent);appWidgetManager.updateAppWidget(appWidgetIds, views);}

@Overridepublic void onReceive(Context context, Intent intent) {super.onReceive(context, intent);initListener(context);}



更多相关文章

  1. Android API指南(二)自定义控件04之 位置说明
  2. 第九章 Android 系统信息与安全机制
  3. Android 提供的一系列辅助系统开发工具
  4. Android布局及控件的属性说明
  5. android中怎样将自己的应用程序的签名改为系统签名一样

随机推荐

  1. 详解php中整数判断的方法(附代码)
  2. php中的绘图技术详解
  3. PHP如何实现支付宝支付功能(图文详解)
  4. PHP 数组常用函数总结
  5. PHP重置数组为连续数字索引的三种方式
  6. PHP中箭头函数的实例详解
  7. PHP根据键值合并数组
  8. php单例模式 使用场景和使用方法
  9. 学习PHP死循环写法和作用
  10. PHP 简单实现延时操作