
DieGoldeneMitte
Dauer-User
- 262
Hallo,
ich habe ein Widget geschrieben, dass bei einem Klick die Ansicht wechseln soll. Die richtige Renderroutine wird aufgerufen, aber in keinem der Launcher, die ich probiert habe (Apex, MiniLaucher und Nova) wird die Änderung angezeigt, nur der Launcher von Google tut das, was er soll. Hat jemand schonmal etwas ähnliches beobachtet?
Die Render Routine sieht so aus:
Mein Code kommt mir irgendwie kompliziert vor, geht das vielleicht auch grundsätzlich einfacher?
ADD: bei Nova bin ich wohl nicht der erste mit dem Problem, aber dort heisst es, das wäre seit 5mon gefixt
ADD: Oha, scheint ein Nexus 4 Problem zu sein.
ADD: Problem gelöst, nach einem Reboot des N4 ging es dann doch.
ich habe ein Widget geschrieben, dass bei einem Klick die Ansicht wechseln soll. Die richtige Renderroutine wird aufgerufen, aber in keinem der Launcher, die ich probiert habe (Apex, MiniLaucher und Nova) wird die Änderung angezeigt, nur der Launcher von Google tut das, was er soll. Hat jemand schonmal etwas ähnliches beobachtet?
Die Render Routine sieht so aus:
Code:
public class Widget extends AppWidgetProvider {
//...
public void onUpdate( Context ctx, AppWidgetManager mgr, int[] ids ) {
// der von onReceive gefeuerte intent kommt hier an
doUpdate(ctx,mgr,ids);
super.onUpdate(ctx, mgr, ids);
}
public static void doUpdate( Context ctx, AppWidgetManager mgr, int[] ids ) {
// snip
for( int id: ids ) {
// snip
Intent intent = new Intent( ctx, Widget.class );
intent.putExtra(Widget.WIDGET_ID, id);
intent.setAction(Widget.FLIP_WIDGET);
PendingIntent pi = PendingIntent.getBroadcast( ctx, 0, intent, 0 );
RemoteViews updView = new RemoteViews( ctx.getPackageName(), R.layout.widget );
// die richtige bitmap wird berechnet
updView.setImageViewBitmap(R.id.img, computeBitmap() );
updView.setOnClickPendingIntent(R.id.img, pi );
mgr.updateAppWidget(id, updView);
}
@Override
public void onReceive( Context context, Intent intent ) {
// der pending intent von oben kommt hier an, das klappt
if( intent.getAction().equals(FLIP_WIDGET) ) {
int id = intent.getExtras().getInt(WIDGET_ID);
flip(id); //
Intent intent2 = new Intent(context,Widget.class);
intent2.setAction("android.appwidget.action.APPWIDGET_UPDATE");
int[] ids = {id};
intent2.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS,ids);
context.sendBroadcast(intent2);
return;
}
super.onReceive(context, intent);
}
ADD: bei Nova bin ich wohl nicht der erste mit dem Problem, aber dort heisst es, das wäre seit 5mon gefixt

ADD: Oha, scheint ein Nexus 4 Problem zu sein.
ADD: Problem gelöst, nach einem Reboot des N4 ging es dann doch.
Zuletzt bearbeitet: