2011年12月6日火曜日

[android] AppWidgetの表示変更時の注意

AppWidgetはActivityと違いUIの操作出来る範囲に制限があります。

そして操作するメソッドもAcitityの場合と違い、少し特殊です。

class TestWidget extends AppWidget {
   @Override
   public void onUpdate(Context context, AppWidgetManager awm, int[] awi) {
        // 全ての操作はRemoteViewsを介して行います
        RemoteViews rv = new RemoteViews(context,getPackageName(), R.layout.main);
        // id=textなTextViewのtextを変更します
        rv.setTextViewText(R.id.text, "Hello World!");
        
        // 反映させるにはAppWidgetmanagerに更新を通知します。(※これをしないと反映されません)
        ComponentName thisWidget = new ComponentName(context, TestWidget.class);
        awm.updateAppWidget(thisWidget, rv);
   }
}

よく反映のロジックを忘れるのでメモ