Textansichten in einem Fragment-Layout ändern sich beim Aufruf von SetText () nicht

8

Meine Anwendung (Stufe 13) ist eine Aktivität, die Tabs in der Aktionsleiste verwendet, um einige Fragmente zu verwalten, die dies .

Nun startet die Aktivität einen Dienst, der fortlaufend Berechnungen durchführt und Werte zurückgibt, die ich in den Fragmenten anzeigen möchte. Die Aktivität - Dienstkommunikation wird über Sendeempfänger implementiert, und die Aktivität mischt die Daten in das entsprechende Fragment.

Alles scheint korrekt eingerichtet zu sein, und die Daten machen es zur Fragmentaktualisierungsmethode, aber wenn ich versuche, die neuen Werte in Textansichten anzuzeigen, werden die neuen Werte nie angezeigt.

Der Code zum Ändern der Textansichten:

%Vor%

Der Code zum Aufrufen der Fragmentaktualisierungsmethoden vom Broadcastempfänger in der Aktivität:

%Vor%

Ich habe bemerkt, dass isVisible () scheinbar nie wieder wahr wird, aber ich bin mir nicht sicher, was es bedeutet oder wie ich es ändern kann.

Außerdem kann ich einem Fragment programmatisch keine Bildansicht hinzufügen. Hier ist der Code (der sich in onActivityCreated () befindet):

%Vor%

Der BasicCompass-Konstruktor nimmt einen Context, obwohl ich mir nicht ganz sicher bin, was ich passiere.

Der Code dafür wurde mehr oder weniger aus einer aktiven Aktivität entnommen und in ein Fragment eingefügt, um Tabs zu ermöglichen. Ich bin offen für Vorschläge in Bezug auf die Struktur des Codes zu ändern.

Danke für jede Hilfe.

BEARBEITEN

Das XML-Layout des Fragments:

%Vor%

Und das Fragment, das es verwendet:

%Vor%

}

    
Matt 02.02.2012, 20:21
quelle

1 Antwort

6

diese Zeile:

%Vor%

sollte in Activity.onCreate() aufgerufen werden und sicherstellen, dass es nur einmal aufgerufen wird. In Ihrem Code wird es jedes Mal aufgerufen, wenn Fragment in den aktiven Zustand wechselt. Und die TextView und RaidoButton Sachen werden auf den Status define im Layout xml zurückgesetzt.

Checkout Fragment Lebenszyklus hier .

UPDATE: Der Status eines Ansichtswidgets wird von Activity, z. B. TextView, beibehalten. Versuchen Sie, Ihre setXXX() Methode nach onResume() zu verschieben. Ich habe Erfahrung, dass setXXX() nicht funktioniert in onActivityCreated() , aber funktioniert gut in onResume() .

    
Hank 24.02.2012, 08:02
quelle

Tags und Links