【发布时间】:2014-03-01 16:20:04
【问题描述】:
我有一个小部件的多个实例。 当我单击一个小部件时,配置活动按预期启动,该活动检索相应的小部件 ID(我按照 this post 解释如何区分意图):
Intent configIntent = new Intent(context, WidgetConfigureDisplayActivity.class);
configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, configIntent, PendingIntent.FLAG_UPDATE_CURRENT);
views.setOnClickPendingIntent(R.id.mood_main_layout, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
所以一切正常,除非我在配置活动中使用主页按钮(而不是返回按钮)。
在主屏幕上,如果我单击另一个小部件实例,则会显示配置活动,但不会使用新的小部件实例配置进行更新(额外中的小部件 id 未更改)。
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
widgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,
AppWidgetManager.INVALID_APPWIDGET_ID);
}
我相信 FLAG_UPDATE_CURRENT 标志的目的是更新活动中的小部件 ID,但它似乎不起作用(我试图覆盖 onNewIntent、onResume 方法,但没有成功)。使用 launchMode 和其他标志也无济于事。
【问题讨论】: