2010-08-15 141 views
0

我有一个简单的appWidget来显示图像。在配置活动中选择图像,并通过移除视图更新小部件。这是在按钮按下执行下面的代码完成:重新启动设备后appWidget布局重置

Intent intent = new Intent(context, KidDialog.class); 
intent.setData(selectedImage); 

PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, 0); 
widgetView.setOnClickPendingIntent(R.id.centerBrd, pendingIntent); 

widgetView.setImageViewUri(R.id.widImg, selectedImage); 

appWidgetManager.updateAppWidget(appWidgetId, widgetView); 

Intent resultValue = new Intent(); 
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId); 
setResult(RESULT_OK, resultValue); 
finish();` 

正如你所看到的,它也看到了对的PendingIntent图像的onClickListener。我不认为这是相关的。无论如何,这项工作很棒。小部件完全符合我的要求。直到我重新启动设备。

当我用apk中的xml中的默认视图重新加载小部件时。它不保留来自初始配置的图像更新。我的问题是,如何在配置活动期间使用更新后的视图重新启动后重新加载小部件?我还需要重置onClick Pendingintent,但我会在以后保存。无论如何,我希望他们是相关的。所以我没有想法。

回答

0

我不确定最佳答案,但是当您从按钮按下时收到意图时,您可以将图像名称保存为SharedPreference。

而且当你创建窗口小部件,检查sharedpreference的值,并用它来恢复所需的图像..

+0

我已经试过了。问题是appwidget无权访问共享首选项。是的,我觉得很奇怪。我似乎是错过了那些奇怪的设计结构之一。不管出于何种原因,它不会从具有访问权的结构继承。另一个我发现的是,你不能使用额外的pendingintent。这些都是一种痛苦。 到目前为止,我提出的最佳选择是在外部文件或内部sql数据库中构建自己的偏好结构。体积庞大,但我发现在appwidget和活动之间共享信息的唯一方式。 – PhilD41 2010-08-17 03:08:49

相关问题