AppWidgets - 动态更新Intent extras内容

时间:2012-07-08 08:23:29

标签: android android-intent android-appwidget android-pendingintent

我有AppWidget与两个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将输入的消息发送回显示它的AppWidge t。然后有一个共享消息的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变量中。但是,当第二个Activity启动时,incomingMessage为空,表示当变量值更改时Intent内容不会更新。如何实现这种效果?提前谢谢。

1 个答案:

答案 0 :(得分:0)

  

如何实现这种效果?

如果您要在同一核心getActivity()上创建PendingIntent,请在Intent来电中使用相应的标记,例如FLAG_UPDATE_CURRENT(例如,针对同一活动)并且正在改变演员。

话虽如此,由于TransparentPromptActivityMainActivity不是同一个活动,FLAG_UPDATE_CURRENT无济于事。在您的第二种情况下,您的问题可能是incomingMessage null