Update nur mit der aktuellen Android-widget-ID in der update-Methode
Mache ich ein widget in android erzeugt eine Zufallszahl, die, wenn geklickt wird. Wenn das widget allein auf dem home-Bildschirm funktioniert es tadellos, aber wenn Sie fügen Sie mehrere von Ihnen, die Sie starten zum generieren von Zufallszahlen in der gleichen Zeit. Was passiert ist, als ein individuelles widget geklickt wird, aktualisiert Sie alle von Ihnen; was in vielen Zufallszahlen. Was ich will, ist jedes widget isoliert von den anderen; im Grunde, wenn Sie ein widget angeklickt wird es nur aktualisiert sich selbst und nicht die anderen um ihn herum. Ich denke, dies ist erreichbar, indem man die ID des aktuellen widgets und update, dass man nur als adaptiert an die update-Methode aktualisiert alle widgets; wie mache ich das?
Mein code
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
//Get all ids
ComponentName thisWidget = new ComponentName(context,
MyWidgetProvider.class);
int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
for (int widgetId : allWidgetIds) {
//Create some random data
int number = (new Random().nextInt(100));
RemoteViews remoteViews = new RemoteViews(context.getPackageName(),
R.layout.widget_layout);
Log.w("WidgetExample", String.valueOf(number));
//Set the text
remoteViews.setTextViewText(R.id.update, String.valueOf(number));
//Register an onClickListener
Intent intent = new Intent(context, MyWidgetProvider.class);
intent.setAction(AppWidgetManager.ACTION_APPWIDGET_UPDATE);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.update, pendingIntent);
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
}
Zusammenfassung:
In diesem code wird die update-Methode und wird aufgerufen, wenn ein widget angeklickt wird. Ich will diese Methode, um nur aktualisieren Sie die widget-ID, die genannt, nicht für diese Methode aktualisiert alle widgets-ID auf dem home-Bildschirm.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem und ich fand diese Art und Weise, es zu lösen:
1.Unterscheiden zu können zwischen mehreren Instanzen der gleichen AppWidgetProvider, wenn die Registrierung der "onClick" - Ereignis (Vorsatz), müssen Sie fügen einen zusätzlichen Wert mit der widget-ID (appWidgetId):
2.Update nur der Blick auf die aktuelle Instanz:
3.Android verwendet intents, also, wenn Sie erstellen eine Absicht, stellen Sie sicher, Sie setzen eine eindeutige ID, oder sonst der gleichen Absicht verwendet, bevor ausgelöst wird, also für alle Instanzen:
4.Bei der Handhabung des Klick-Ereignis die appWidgetId aus dem "extras" - Nutzlast von der Absicht.
Sie finden weitere nützliche details hier.