0

AppWidgettwo と対話するがありActivitiesます。まずActivity、ユーザーにテキストを入力するように求めます。Activityこれを開始するコードは次のAppWidgetとおりです。

Intent promptIntent = new Intent(context,
        TransparentPromptActivity.class);
promptIntent.putExtra("appwidget_id", appWidgetId);
promptIntent.putExtra("message", incomingMessage);
PendingIntent promptPendingIntent = PendingIntent.getActivity(
        context, 0, promptIntent, 0);
views.setOnClickPendingIntent(R.id.app_widget_tv,
        promptPendingIntent);

これによりActivity、入力されたメッセージがAppWidget に返され、表示されます。次にActivity、メッセージを共有する があり、これを開始するコードは次のActivityとおりです。

Intent shareIntent = new Intent(context, MainActivity.class);
shareIntent.putExtra("message", incomingMessage);
PendingIntent sharePendingIntent = PendingIntent.getActivity(
        context, 0, shareIntent, 0);
views.setOnClickPendingIntent(R.id.app_widget_btn_share,
        sharePendingIntent);

ご覧のとおり、メッセージはローカルincomingMessage変数に格納されています。ただし、2 番目Activityが開始されると、変数の値が変更されたときに内容が更新されないincomingMessageことを意味します。Intentこの効果はどのように達成できますか?前もって感謝します。

4

1 に答える 1

0

この効果はどのように達成できますか?

同じコア(同じアクティビティなど) で を作成し、エクストラを変更する場合は、getActivity()呼び出しで適切なフラグ ( など) を使用します。FLAG_UPDATE_CURRENTPendingIntentIntent

そうは言っても、TransparentPromptActivityMainActivityは同じアクティビティでFLAG_UPDATE_CURRENTはないため、役に立ちません。おそらくあなたの問題は、それincomingMessagenullあなたの2番目のケースにあるということです。

于 2012-07-08T12:01:03.177 に答える