android - 如何将特定的挂起意图绑定到多个小部件上特定小部件上特定的按钮 appwidget?

  显示原文与译文双语对照的内容
0 0

我有一个我正在使用的小部件,它允许用户在屏幕上有更多的小部件实例。 每个部件id维护自己的配置文件。 然而对于一些为每个小部件to设置按钮的代码,我的代码都不起作用。 下面是负责的代码。 谁能看到问题在哪里?

private void TieClicks(Context context){
 RemoteViews rViews;
 PendingIntent editPendingIntent= null;
//Intent updateintent = new Intent(context,SyncNoteWidget.class);
//updateintent.setAction(SyncNote_Action_Widget_Update);
//PendingIntent pendingupdateintent = PendingIntent.getBroadcast(context, 0, updateintent, 0);
//rViews.setOnClickPendingIntent(R.id.widgettextview, pendingupdateintent);
//
 AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
 int[] ids = appWidgetManager.getAppWidgetIds(new ComponentName(context, SyncNoteWidget.class));
 for (int i =0;i <ids.length;i=i+1){
 int wId = ids[i];
 rViews = new RemoteViews(context.getPackageName(),R.layout.widget);
 editPendingIntent = makeControlPendingIntentActivity(context, wId);
 Log.v("syncnote","tieing" + String.valueOf(wId));
 rViews.setOnClickPendingIntent(R.id.widgeteditbutton, editPendingIntent);
 appWidgetManager.updateAppWidget(wId, rViews);
 editPendingIntent= null;
 }
 }
 private PendingIntent makeControlPendingIntentActivity(Context context,int appWidgetId) {
 Intent active = new Intent(context, EditNote.class);
 active.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK );
 active.setAction(com.ntu.way2fungames.syncnote.SyncNoteWidget.SyncNote_Action_Edit); 
 active.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
 return(PendingIntent.getActivity(context, 0, active, 0 ));
 }
时间:原作者:2个回答

0 0

问题在于"PendingIntent 。getActivity"在使用第一个PendingIntent的原因。 上帝知道为什么。修复是在下面,只是向调用添加一些随机数据。

private PendingIntent makeControlPendingIntentActivity(Context context,int appWidgetId) {
 Intent active = null;
 active = new Intent(context, EditNote.class);
 active.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK );
 active.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK );
 active.setAction(com.ntu.way2fungames.syncnote.SyncNoteWidget.SyncNote_Action_Edit); 
 active.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
 PendingIntent pi =PendingIntent.getActivity(context,(int)(Math.random()*10000), active, 0 );
 Log.v("syncnote","PI:"+pi.toString());
 return(pi);
 }
原作者:
0 0

如果你包含要创建的日志条目,它将有帮助:

 Log.v("syncnote","tieing" + String.valueOf(wId));

这可以回答重要的问题: 有多少值位于: int [] id?

R.layout.widget 中的内容?

你的小部件的图片也会帮助你。 一张图片是值得的。

原作者:
...