我有一个启动活动的小部件,但是当活动完成使用finish()时,我不知道我的小部件如何知道它,因为我无法覆盖onActivityResult(),这似乎是唯一的方法当活动结束时听......
任何人都知道在Activity启动活动的小部件时关闭活动的另一种方式吗?
如果它有帮助,这里是我在我的小部件中使用的代码来启动Activity
@Override
public void onUpdate(Context context,
AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Intent i = new Intent(context, ChooseContact.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context,0,i,0);
RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.main);
updateViews.setOnClickPendingIntent(R.id.button, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds, updateViews);
// Not really necessary, just a habit
super.onUpdate(context, appWidgetManager, appWidgetIds);
}
答案 0 :(得分:0)
看起来我正以错误的方式接近它。根据文件:
当App Widget使用配置Activity时,Activity需要在配置完成时更新App Widget。
http://developer.android.com/guide/topics/appwidgets/index.html#Configuring
所以看起来我会从活动中更新小部件。
答案 1 :(得分:0)
正如您所说,Activity更新小部件更好。您可以覆盖Activity的onStop方法,并向窗口小部件发送一个Intent,要求它重绘...这样的事情:
@Override
protected void onStop() {
super.onStop();
// save settings
// ...
// update widget
Intent intent = new Intent("com.mywidget.action.SETTINGS_CHANGED");
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, new int[] { widgetId });
intent.setData(Uri.withAppendedPath(Uri.parse(App.URI_SCHEME + "://widget/id/"),
String.valueOf(widgetId)));
sendBroadcast(intent);
}