2010-08-15 140 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

相關問題