我正在实现另一个电池小部件:)我想让用户在开始时选择小部件外观,所以实际上我的初始布局是这样的:
<ImageView
android:id="@+id/battery_image_purple"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:contentDescription="battery image"
android:src="@drawable/purple_p10"
android:visibility="invisible" />
<ImageView
android:id="@+id/battery_image_orange"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:contentDescription="battery image"
android:src="@drawable/orange_p10"
android:visibility="invisible" />当小部件被添加到主屏幕时,用户将所需的变体保存到共享偏好中,作为key - widget id值变量id。
接下来,我希望根据该组合设置可见性:
AppWidgetManager widgetManager = AppWidgetManager
.getInstance(getApplicationContext());
RemoteViews rv = new RemoteViews(context.getPackageName(), R.layout.widget);
for (int i = 0; i < widgetIds.length; i++) {
widgetManager.updateAppWidget(widgetIds[i], rv);
SharedPreferences preferences = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
int widgetVariant = preferences.getInt(
"ID"+widgetIds[i], 0);
int batteryImageId=0;
switch(widgetVariant){
case 0:
batteryImageId = R.id.battery_image_purple;
break;
case 1:
batteryImageId = R.id.battery_image_orange;
break;
case 2:
batteryImageId = R.id.battery_image_blue;
break;
}
rv.setViewVisibility(batteryImageId, View.VISIBLE);
}我的问题是,上面的代码使用上次保存的设置更新小部件的所有实例-如何仅将更改应用于特定的小部件Id?
发布于 2012-01-07 22:09:57
我相信这一行决定了它是更新所有的应用程序,还是只更新你选择的应用程序:
for (int i = 0; i < widgetIds.length; i++) {
}试着移除它吗?
另外,我认为这一行必须放在你正在做的事情的最后:
widgetManager.updateAppWidget(widgetIds[i], rv);https://stackoverflow.com/questions/8769954
复制相似问题