Merge "Need to give the AppWidgetHostView the new info about the provider, in case the initialLayout changed." into gingerbread

This commit is contained in:
Joe Onorato
2010-06-23 17:46:46 -07:00
committed by Android (Google) Code Review
4 changed files with 41 additions and 15 deletions

View File

@@ -237,7 +237,7 @@ public class AppWidgetHost {
v = mViews.get(appWidgetId);
}
if (v != null) {
v.updateAppWidget(null, AppWidgetHostView.UPDATE_FLAGS_RESET);
v.resetAppWidget(appWidget);
}
}
@@ -247,7 +247,7 @@ public class AppWidgetHost {
v = mViews.get(appWidgetId);
}
if (v != null) {
v.updateAppWidget(views, 0);
v.updateAppWidget(views);
}
}
}

View File

@@ -46,8 +46,6 @@ public class AppWidgetHostView extends FrameLayout {
static final boolean LOGD = false;
static final boolean CROSSFADE = false;
static final int UPDATE_FLAGS_RESET = 0x00000001;
static final int VIEW_MODE_NOINIT = 0;
static final int VIEW_MODE_CONTENT = 1;
static final int VIEW_MODE_ERROR = 2;
@@ -102,7 +100,7 @@ public class AppWidgetHostView extends FrameLayout {
mAppWidgetId = appWidgetId;
mInfo = info;
}
public int getAppWidgetId() {
return mAppWidgetId;
}
@@ -147,22 +145,23 @@ public class AppWidgetHostView extends FrameLayout {
return new FrameLayout.LayoutParams(context, attrs);
}
/**
* Update the AppWidgetProviderInfo for this view, and reset it to the
* initial layout.
*/
void resetAppWidget(AppWidgetProviderInfo info) {
mInfo = info;
mViewMode = VIEW_MODE_NOINIT;
updateAppWidget(null);
}
/**
* Process a set of {@link RemoteViews} coming in as an update from the
* AppWidget provider. Will animate into these new views as needed
*/
public void updateAppWidget(RemoteViews remoteViews) {
updateAppWidget(remoteViews, 0);
}
if (LOGD) Log.d(TAG, "updateAppWidget called mOld=" + mOld);
void updateAppWidget(RemoteViews remoteViews, int flags) {
if (LOGD) Log.d(TAG, "updateAppWidget called mOld=" + mOld + " flags=0x"
+ Integer.toHexString(flags));
if ((flags & UPDATE_FLAGS_RESET) != 0) {
mViewMode = VIEW_MODE_NOINIT;
}
boolean recycled = false;
View content = null;
Exception exception = null;

View File

@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2006 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/oh_hai_text"
android:layout_width="150dp"
android:layout_height="150dp"
android:text="@string/appwidget_view_title"
android:background="#8fff"
android:textColor="#000"
android:textStyle="bold"
/>

View File

@@ -41,6 +41,7 @@ public class TestAppWidgetProvider extends BroadcastReceiver {
Log.d(TAG, "DISABLED");
}
else if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action)) {
if (true) return;
Log.d(TAG, "UPDATE");
Bundle extras = intent.getExtras();
int[] appWidgetIds = extras.getIntArray(AppWidgetManager.EXTRA_APPWIDGET_IDS);