クリックしたときにアクティビティを起動するAppウィジェットを実装しました。 WidgetProvider
のウィジェットからアクティビティを起動できない場合があります。
onUpdate()
方法:
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
final int N = appWidgetIds.length;
for (int i=0; i<N; i++) {
int appWidgetId = appWidgetIds[i];
RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.mywidgetprovider_layout);
// ....update updateViews here
appWidgetManager.updateAppWidget(appWidgetId, updateViews);
Intent onClickedIntent = new Intent(context,MyActivity.class);
PendingIntent pi = PendingIntent.getActivity(context, 0, onClickedIntent, 0);
updateViews.setOnClickPendingIntent(R.id.myView, pi);
appWidgetManager.updateAppWidget(appWidgetId, updateViews);
}
}
それはウィジェットがホーム画面に追加した後に期待どおりに動作。
ただし、後でアクティビティを再度開始することはできません。ウィジェットを削除してもう一度追加する必要があります。
どうすれば修正できますか?助けてください。
Thx dave.c、それは私にとってはうまくいくようです。主なポイントは、forループの外側にあるupdateViews.setOnClickPendingIntent()のコードを移動することです。 – chow
まだ問題があります:(Nexus Oneが2.3.3を更新した後にもっと深刻になる! – chow