Widget Update wird ausgeführt, aber nicht angezeigt

  • 0 Antworten
  • Letztes Antwortdatum
DieGoldeneMitte

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:
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);
    }
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.
 
Zuletzt bearbeitet:
Zurück
Oben Unten