2011-02-09 11 views
1

私はウィジェットを含むAndroidアプリケーションで作業しています。このアプリの主なインターフェースは簡単なアクティビティですが、ユーザーがアクティビティでできることのいくつかは、ウィジェットを更新する必要があります。つまり、onUpdateメソッドを実行する必要があります。アプリのメインアクティビティからウィジェットのonUpdateメソッドを呼び出す

このメソッドをアクティビティから起動するにはどうすればよいですか? otherquestionsを見ると、レイアウトを変更するコードを書くことができましたが、onUpdateを実行していないようです(空のレイアウトが残っているだけなので、onUpdateで追加されたデータはありません)。

アイデアやコードサンプルは非常に感謝しています!

答えて

9

私はまだAndroidのにかなり新しいですが、私は三つのステップでこれを達成:

まず、私は方法(myUpdate(Context))で私のAppWidgetProvider.onUpdateの内容を置きます。

public void onReceive(final Context context, final Intent intent) 
{ 
    super.onReceive(context, intent); 

    if (MY_PUBLIC_STATIC_STRING.equals(intent.getAction())) 
    { 
     myUpdate(context); 
    } 
} 

第三に、私の他の活動から、私はちょうど意図に設定されたアクションで、一般的なブロードキャストを送信します。

第二に、私はこのような何かを見て()AppWidgetProvider.onReceiveをオーバーライド。

Intent updateWidgetIntent = new Intent(context, MyWidget.class); 
updateWidgetIntent.setAction(MyWidget.MY_PUBLIC_STATIC_STRING); 
context.sendBroadcast(updateWidgetIntent); 

これは、代わりにあなたを与えるにonUpdate素敵なインタフェースの、文脈やアプリのウィジェットIDSからAppWidgetManagerに自分自身を見つけるために持っていることのマイナス面を持っています。だから私はこれが正しいアプローチだと懐疑的だ。運が良かった。

myUpdate(コンテキスト)は、次のように起動します:

AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context); 
int[] appWidgetIds = 
    appWidgetManager.getAppWidgetIds(new ComponentName(context, this.getClass())); 
関連する問題