« 背景タイリングモードの適用 | メイン | 解像度まとめ »

2011年01月31日

Android:: 複数配置されたウィジェットでクリックに反応する

    

よくあるサンプルソースでは、ウィジェット更新時以下のようなソースコードが書かれている。

RemoteViews remoteViews = new RemoteViews( getPackageName(), R.layout.main );
remoteViews.XXX; // 更新
ComponentName widget = new ComponentName( context, AppWidgetProvider.class );
AppWidgetManager manager = AppWidgetManager.getInstance( context );
manager.updateAppWidget( widget, remoteViews );

これでもウィジェットの表示は更新されるが、同じウィジットが複数配置されている時、クリックに反応するのが最後に配置されたウィジェットのみになったり、反応しなくなってしまうようだ。
複数配置するようなウィジェットではなくても、複数配置することは可能なのでクリックで何かしらリアクションするウィジェットの場合はそのことを意識して作った方が良い。
で、複数あっても全てのウィジェットで反応するようにするには以下のように1個1個 updateAppWidget をコールしていく。

RemoteViews remoteViews = new RemoteViews( getPackageName(), R.layout.main );
int count = mAppWidgetIds.size();
for( int i = 0; i < count; i++ ) {
  int appWidgetId = mAppWidgetIds.get(i).intValue();
  remoteViews.setOnClickPendingIntent( R.id.widget_frame, makeClickPendingIntent(context, appWidgetId) );
  AppWidgetManager.getInstance(context).updateAppWidget(appWidgetId, remoteViews);
}




投稿者 Takenori : 2011年01月31日 21:04




comments powered by Disqus
Total : Today : Yesterday : なかのひと