That is so weird, using appWidgetIds[j] was actually my first attempt but
it didnt work back then ... something must have screwed it up.
But now it works. I'm so relieved :D
Thanks for your great help =)
Am Dienstag, 7. August 2012 09:29:49 UTC+2 schrieb Kostya Vasilyev:
>
> I realized that one more change was needed to your code five seconds after
> sending my first response :)
>
> You are using this:
>
> void updateAppWidget(int[] appWidgetIds, RemoteViews views)
>
> which takes an int[] array of widget ids, but only one RemoteViews. Thus,
> all your widget instances receive the same data, the last remote views that
> gets built.
>
> What you need to do is:
>
> 1 - Use void updateAppWidget(int appWidgetId, RemoteViews views), whch
> updates one widget
>
> 2 - Change the loop structure to go something like this:
>
> for(int j = 0;j < appWidgetIds.length;j++){
> RemoteViews views = new RemoteViews(context.getPackageName(),
> R.layout.widget_layoutmain);
> Intent i = new Intent(context.getApplicationContext(),
> BatteryProvider.class);
> i.setAction("MyCode");
> i.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,
> appWidgetIds[j]);
> i.setData(Uri.parse(i.toUri(Intent.URI_INTENT_SCHEME)));
> PendingIntent pi = PendingIntent.getBroadcast(context,j, i,0);
> views.setOnClickPendingIntent(R.id.imageViewLayer,pi);
> appWidgetManager.updateAppWidget(appWidgetIds[j], views);
> }
>
> Now you'll be updating your widgets one by one, with each receiving its
> own RemoteViews object, having its own pending intent.
>
> -- K
>
> 2012/8/7 f.Audire <[email protected]>
>
>> I actually used to have it inside the loop, cant remember why I moved it
>> out. But I put it back in and still no difference.
>>
>> Am Montag, 6. August 2012 23:34:16 UTC+2 schrieb Kostya Vasilyev:
>>
>>> Move the call to appWidgetManager.**updateAppWidget inside the loop.
>>>
>>> -- K
>>>
>>> 2012/8/6 f.Audire <[email protected]>
>>>
>>>> Hi, I dont understand why my PendingIntents arent unique. The toast in
>>>> OnReceive always shows the Id of the last created Widget .
>>>>
>>>> @Override
>>>> public void onUpdate(Context context, AppWidgetManager
>>>> appWidgetManager,
>>>> int[] appWidgetIds){
>>>> super.onUpdate(context, appWidgetManager, appWidgetIds);
>>>>
>>>> RemoteViews views = new RemoteViews(context.**getPackageName(),
>>>> R.layout.widget_layoutmain);
>>>> for(int j = 0;j < appWidgetIds.length;j++){
>>>> Intent i = new Intent(context.**getApplicationContext(),
>>>> BatteryProvider.class);
>>>> i.setAction("MyCode");
>>>> i.putExtra(AppWidgetManager.**EXTRA_APPWIDGET_ID,
>>>> appWidgetIds[j]);
>>>> i.setData(Uri.parse(i.toUri(**Intent.URI_INTENT_SCHEME)));
>>>> PendingIntent pi = PendingIntent.getBroadcast(**context,j,
>>>> i,0);
>>>> views.setOnClickPendingIntent(**R.id.imageViewLayer,pi);
>>>> }
>>>> appWidgetManager.**updateAppWidget(appWidgetIds, views);
>>>> }
>>>>
>>>> @Override
>>>> public void onReceive(Context context, Intent intent) {
>>>>
>>>> super.onReceive(context, intent);
>>>> Bundle extras = intent.getExtras();
>>>> Toast.makeText(context, String.valueOf(extras.getInt(**
>>>> AppWidgetManager.EXTRA_**APPWIDGET_ID)), Toast.LENGTH_SHORT).show();
>>>> }
>>>>
>>>> I have have no Idea why this doesnt work. I've seen so many examples
>>>> that do almost exactly the same. I have tried different flags, different
>>>> data, different actions and different requestCodes but still I seem to
>>>> have
>>>> only one PendingIntent.
>>>>
>>>> What am I doing wrong?
>>>>
>>>> --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Android Developers" group.
>>>> To post to this group, send email to android-developers@**
>>>> googlegroups.com <[email protected]>
>>>> To unsubscribe from this group, send email to
>>>> android-developers+**[email protected]<android-developers%[email protected]>
>>>> For more options, visit this group at
>>>> http://groups.google.com/**group/android-developers?hl=en<http://groups.google.com/group/android-developers?hl=en>
>>>
>>>
>>> --
>> You received this message because you are subscribed to the Google
>> Groups "Android Developers" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/android-developers?hl=en
>>
>
>
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en