3

Ich versuche, Fortschrittsbalken zu verbergen und eine Fehlermeldung auf einen Bearbeitungstext in einem Fragment von onPostExecute() setzen, aber meine App stürzt ab. Ich brauche Hilfe, um das richtig zu machen. Ich werde eine Menge Updates für meine Fragmente für dieses Projekt machen, also muss ich den richtigen Weg kennen, um eine Methode von OnPostExecute() UPDATE.Änderungen an Fragment in Asynctask onPostExecute() -Methode

Ich habe versucht, ein Objekt der Fragment Klasse erstellen und dann das Objekt ich mit den EditText und der progressBar Methode showProgress() aber ich bekomme Laufzeitfehler genannt zuzugreifen versucht.

+0

Können Sie logcat eingeben? – Raghavendra

+0

Danke für Ihre Antwort ... Ich werde es richtig schreiben .. bitte warten Sie 1 Minute –

+0

Ich bekomme diesen Fehler: java.lang.IllegalStateException: Fragment SellerRegisterFragment {1b16e429} nicht an Aktivität –

Antwort

2

Sie erstellen die Fragment-Instanz in onPostExecute. Und dann die Elementvariablen des Fragments verwenden. Wenn Sie nur die Instanz von Fragment erstellen, tun Sie nichts.

Sie müssen das Fragment zu einer Aktivität hinzufügen. Nur dann werden die Rückrufe des Fragments ausgeführt. In diesen Callbacks (wie onCreate, onCreateView) werden Sie Instanzen von EditText, ProgressBar erstellen.

Wenn Sie diese Variablen verwenden, ohne das Fragment zur Aktivität hinzuzufügen, erhalten Sie NullPointerException.

Was ich denke ist, dass Sie der Aktivität bereits ein Fragment hinzugefügt haben. Anstatt diese Fragment-Instanz zu verwenden, erstellen Sie eine neue Instanz und verwenden diese Instanz in onPostExecute.

+0

Ja Fragment ist bereits zu der Aktivität hinzugefügt worden .. wenn der Benutzer auf die Schaltfläche Registrieren klickt, macht die asynctask ihren Job, dh sie validiert den Benutzer auf dem Server und bis die onPostExecute() Methode ausgeführt wird, wird ein Fortschrittsbalken auf dem Fragment angezeigt. .Ich möchte den Fortschrittsbalken auf dem Fragment ausblenden und eine Fehlermeldung auf das Fragment setzen, das der Aktivität bereits hinzugefügt wurde –

+0

Ist der AsyncTask-Code im Fragment vorhanden? – Bob

+0

Nein in einer separaten Klasse –

0

In Ihrem Fehlerprotokoll ist das Problem eindeutig angegeben.

Fragment SellerRegisterFragment{1b16e429} not attached to Activity 

Das Problem ist, dass Sie versuchen, die Methode auf SellerRegisterFragment aufrufen, bevor es zu einer Aktivität beigefügt wird.

FragmentS sind mit Aktivitäten verbunden und Sie finden die Beschreibung in der Android-Dokumentation here.

Ich habe einen Zweifel an Ihrer Logik in der folgenden LOC

SellerRegisterFragment sr = new SellerRegisterFragment(); 

Haben Sie eine Methode auf einer vorhandenen Instanz von SellerRegisterFragment nennen wollen? Wenn ja, dann können Sie einfach eine broadcast verwenden.

Wenn nicht, dann müssen Sie eine neue Instanz erstellen, dann ein FragmentManager verwenden, um ein transaction und dann commit die transaction auszuführen.