1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. Neeldarax, 20.05.2012 #1
    Neeldarax

    Neeldarax Threadstarter Erfahrener Benutzer

    Hi,

    ich schreibe ein Widget. Um das manuelle Aktualiseren/Veränder der Daten zu bewerkstelligen, nutze ich Buttons.

    Die Events und so läuft alles richtig durch, aber beim updateAppWidget passiert nichts.

    Im Debug und nach paar Installationen hat es schon mal geklappt.
    Aber spätestens, wenn ich das Widget neu auf den Home-Screen hinzufüge, ist wieder tote Hose.

    Das ist mein Ausschnitt aus dem Service, der das Widget updatet:
    Code:
    @Override
    public void onStart(Intent intent, int startId) {
        int[] allWidgetIds = intent
                .getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);
    
        AppWidgetManager appWidgetManager = AppWidgetManager
                .getInstance(this.getApplicationContext());
    
        if (allWidgetIds != null) {
            //Das Layout, was auf geladen wird.
            RemoteViews remoteViews = new RemoteViews(this
                    .getBaseContext().getPackageName(),
                    R.layout.widget_view_sites);
    
            //...
    
            if (dataObject != null) {
                //Hier werden die Texte gesetzt. Kein NPE, kein leer String...
                String header = dataObject.getHeader();
                String body = dataObject.getBody();
                String footer = dataObject.getFooter();
    
                //IDs sind vorhanden, richtiges Layout geladen
                remoteViews.setTextViewText(R.id.textHeader, header);
                remoteViews.setTextViewText(R.id.textBody, body);
                remoteViews.setTextViewText(R.id.textFooter, footer);
    
            } else {
                //...
            }
            
            //auch mit jeder einzelnen WidgetID oder mit ComponentName versucht - gleiches verhalten
            appWidgetManager.updateAppWidget(allWidgetIds, remoteViews);
        }
    
        stopSelf(); //auch schon ma rausgenommen oder eine Zeile tiefer verschoben
        super.onStart(intent, startId);
    }
    //... ist nur auskommentierter Code, belanglos für das Geschehen.

    Übliches Verhalten ist, dass er Einmal Läuft und die Daten aktualisert.
    Danach, ob per Button oder Updateinterval, werden die Texte nicht in den TextViews aktualisiert.

    Hat jemand damit Erfahrung oder kann mir Anhaltspunkte nennen, wo ich suchen/verändern kann.

    regards
     
  2. strider, 20.05.2012 #2
    strider

    strider Erfahrener Benutzer

    Bau vor und hinter jede if anweisung eine Log Ausgabe ein dann siehst schon wie weit er kommt und ob da überhaupt was aufgrufen wird.
     
  3. Neeldarax, 20.05.2012 #3
    Neeldarax

    Neeldarax Threadstarter Erfahrener Benutzer

    Hi strider,

    da ich das schon im Debugmodus verfolgt habe, war die Ausgabe weniger aufschlussreich.

    Im Log kann ich verfolgen, wie die Daten wechseln und auch beim updateAppWidget(..) mit dem RemoteView ankommen.

    Den wechsel der Texte kann ich aber auf meinem Widgets nicht verfolgen :(


    Ein weiterer Punkt, der mir auf gefallen ist, ist, dass die PendingIntents für das onClick zwar durchlaufen, aber offensichtlich nicht immer sofort ausgeführt werden.
    Eine reinstallation aus Eclipse behebt das Problem... nur, wenn ich das Widget entferne und wieder auf den Home-Screen hinzufüge.. alte Laie -.-

    Mein Konzept muss ich wohl überarbeiten.

    Ich suche weiter Tutorials für Widget mit multiple onClicks.
    Beispiele aus developer.android...., Vogella, stackoverflow(einige) sind mir bereits geläufig.

    regards
     
  4. strider, 20.05.2012 #4
  5. Neeldarax, 21.05.2012 #5
    Neeldarax

    Neeldarax Threadstarter Erfahrener Benutzer

    QUELLE

    knocked out by API :blink:

    Also der Bestfall (APP installieren, Widget hinzufügen, Buttons drücken) funktioniert.

    Der DAU-Fall scheitert. zB APP installieren, Widget hinzufügen, merken falscher Screen, Widget entfernen, noch ma Widget hinzufügen...
    PendingIntens, die für die Click-Events verantwortlich sind, reagieren nicht, da der RemoteView gecached ist und die ID des neuen Widget nicht kennt. (Wenn ich es so richtig verstanden habe)

    Das Thema eilt für mich nicht, daher stampfe ich es ein. Wollt euch nur über das Resultat informieren :)

    regards
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Gmail Zugriff auf den Anhang verweigert (Automatisches Hinzufügen) Android App Entwicklung 21.01.2017
Du betrachtest das Thema "updateAppWidget - verweigert den Dienst" im Forum "Android App Entwicklung",