0
私は実際に私の最初のレイアウトはそのように見えますが、私は、ユーザーが起動時にウィジェットapparenceを選択できるようにしたいさらに別のバッテリーウィジェット:) を実装しています:ウィジェットがホーム画面のユーザーに追加されウィジェットIDを使用してウィジェットを更新するには?
<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" />
は、所望の節約キー - ウィジェット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に変更を適用する方法?
for (int i = 0; i < widgetIds.length; i++) {
}
それを削除してください:
私は右のあなただけの特定のAppWidgetのistanceを更新したいだろうか? appwidgetインスタンスの設定を保存するコードでは、新しいappwidgetに対してのみupdate手続きを呼び出すことができます。 – Yury
はい、さまざまな方法で異なるインスタンスを更新したいと考えています。 – piotrpo