App Widget Hitergrundbild Wechseln (bei onClick?) im AppWidgetProvider

  • Antworten:2
Sam Browder
  • Forum-Beiträge: 236

20.10.2013, 22:21:51 via Website

Hallo!
Ich habe einen Widget für meine App erstellt, welcher, wenn man auf ihn klick, eine Activity startet. Diese Activity hat kein Layout (UI) bzw. ist komplett durchsichtig (
1android:theme="@android:style/Theme.Translucent.NoTitleBar"
), und so mit sieht man immer noch den Homescreen mit dem Wdget, wenn diese Activity läuft. Jetzt wollte ich, dass wenn man den Widget anklickt, nicht nur die Activity gestartet wird, sondern auch das Hintergrundbild von dem Widget geändert wird (ein Bild für ON und ein für OFF), bzw. wenn die o. g. Activity aktiv ist, der Widget das Bild für ON anzeigt und wenn nicht - das für OFF (damit man sehen kann, ob aktiv oder nicht). Ich habe schon einige Sachen versuch und auch den Internet durchforstet, aber nicht das Richtige gefunden, und es will einfach nicht funktionieren. Hier ist mein AppWidgetProvider Code:

[code]@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
for (int i = appWidgetIds.length; --i >= 0;) {
int appWidgetId = appWidgetIds[i];
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, new Intent(context, Count.class), 0);
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.count_widget);
remoteViews.setOnClickPendingIntent(R.id.countWidget, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
}
}[/code]

Ich habe auch schon mit folgendem versucht:
1remoteViews.setImageViewResource(R.id.countWidget, R.drawable.img_on);
Aber dann habe ich das ON Bild von Anfang an, obwohl im Widget Layout das OFF Bild voreingestellt ist und von einem Wechsel immer noch keine Spur. Das automatische WidgetUpdate hat damit auch nichts zu tun - das habe ich auf 24 Stunden (erst Mal) festgelegt.
Ich brauche eure Hilfe! Danke im Voraus!

— geändert am 20.10.2013, 22:38:22

Antworten
Michele
  • Forum-Beiträge: 1.525

21.10.2013, 11:40:34 via Website

Hallo Sam.


Das was du hast ist der Standard kram von der Widget.
Damit es immer auf deinen Klick reagiert, mache es so:

1RemoteViews touchViews = new RemoteViews(context.getPackageName(), R.layout.activity_main);
2 Intent touchIntent = new Intent(context, DeineClass.class);
3 touchIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);
4 PendingIntent touchPending = PendingIntent.getService(context, 0, touchIntent, PendingIntent.FLAG_UPDATE_CURRENT);
5 touchViews.setOnClickPendingIntent(R.id.imageView, touchPending);
6 appWidgetManager.updateAppWidget(appWidgetIds,touchViews);

Wenn du also deine R.id.imageView anklickst oder was auch immer du angibst,
führt er deine .class aus.
Z.B dann deine AppWidgetProvider.class oder ein Service oder oder.

Um es genauer zu verstehen:
http://www.vogella.com/articles/AndroidWidgets/article.html

LG

— geändert am 21.10.2013, 11:44:36

Sam Browder

Antworten
Sam Browder
  • Forum-Beiträge: 236

21.10.2013, 11:46:01 via Website

Vielen Dank! :grin:

Antworten