2012-01-07 11 views
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++) { 
} 

それを削除してください:

+0

私は右のあなただけの特定のAppWidgetのistanceを更新したいだろうか? appwidgetインスタンスの設定を保存するコードでは、新しいappwidgetに対してのみupdate手続きを呼び出すことができます。 – Yury

+0

はい、さまざまな方法で異なるインスタンスを更新したいと考えています。 – piotrpo

答えて

0

私は、この行は、それがその種類のすべてのアプリを更新、またはちょうど1あなたが選択したかどうかを決定すると考えていますか?

はまた、私はこの行が何をやっているの終わりに行かなければならないと思う:

widgetManager.updateAppWidget(widgetIds[i], rv);