我的主屏幕上有一個小部件,其中包含多個具有默認背景圖像的ImageButton。通過配置活動,我可以更改任何ImageButton上的圖像。問題是當旋轉屏幕時,ImageButton上的圖像消失並且它變回默認圖像。Android小部件ImageButton在旋轉屏幕時丟失圖像
我不知道爲什麼會這樣或如何解決它
我的主屏幕上有一個小部件,其中包含多個具有默認背景圖像的ImageButton。通過配置活動,我可以更改任何ImageButton上的圖像。問題是當旋轉屏幕時,ImageButton上的圖像消失並且它變回默認圖像。Android小部件ImageButton在旋轉屏幕時丟失圖像
我不知道爲什麼會這樣或如何解決它
當屏幕旋轉時,整個appwidget使用您傳遞給AppWidgetManager .updateAppWidget最後RemoteViews對象()重建。因此,每次調用updateAppWidget()時,都必須傳遞一個RemoteViews對象,該對象包含所有設置的RemoteViews對象,以便在完成重新構建時控件所需的所有內容,而不僅僅是要在窗口小部件上更新的一兩件事情顯示。
因此,在您的AppWidgetProvider類中,無論何時更新appwidget,您都需要創建一個RemoteViews對象,使用該對象爲您的appwidget構建所有視圖設置,然後在調用AppWidgetManager.updateAppWidget()時你完成了。
我的猜測是,你正在做的事情是這樣的:
當你需要做這樣的事情:
mbaird的答案是唯一的答案。
但還有另一個解決方案。解決方法是在創建/更新小部件的整個視圖時使用updateAppWidget,並且僅在更改視圖的一部分時使用partiallyUpdateAppWidget。然後視圖不會重置。
部分更新例子(顯示在所有小一點點同步圖標):
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, Widget.class));
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget_layout);
views.setViewVisibility(R.id.syncImage, View.VISIBLE);
for (int i = 0; i < appWidgetIds.length; i++) {
appWidgetManager.partiallyUpdateAppWidget(appWidgetIds[i], views);
}
這一工程...謝謝! – alejom99 2010-04-16 15:13:09
如果您從兩個位置進行更新,該怎麼辦?又名'OnRecieve'和'OnUpdate' – Doomsknight 2012-09-17 15:51:46
@Doomsknight爲什麼這會有所作爲?只需在兩者中正確更新它。我不確定你的問題如何適用於這裏提出的原始問題。 – 2012-09-17 17:00:19