2017-09-12 1 views
0

ich ScreenSlidePagerAdapter verwende, ViewPager und PagerAdapter Ich habe drei Fragmente und jedes Fragment enthält drei vor vier editText Feldern aus. Fragment 1: personalInfo Fragment 2: Fragment 3 contactInfo : workInfo Work auch Clear Button enthalten alle Daten löschen editText bilden alle drei Fragmnets.Android: Clear editText Daten aus mehrere Fragmente an einem Click

Wenn Benutzer Wert eingeben in personalInfo dann contactInfo und zuletzt gehen Sie zu WorkInfo. Jetzt bei Klick auf Clear-Taste möchte ich alle editText Daten löschen. Ich versuchte findViewById(), aber ich konnte keine Referenz von editText von Fragment 1 und Fragment 2 bekommen.

Wenn jemand eine Lösung hat dann hilf mir.

Antwort

0

Tun Sie etwas wie dieses: Machen Sie eine boolesche Variable in Ihrer Klasse initialisiert auf false. Wenn jemand auf "Löschen" klickt, ändere den Wert dieses Wahrheitswerts in "Wahr". Und in onstart() überprüfen Sie diese Variable, bevor Sie Daten im Editiertext anzeigen.

+0

Dies funktioniert nicht mit Fragment, denn wenn wir zum 2. Fragment gehen, dann ruft onPause() des ersten Fragments nicht auf. Es ruft, wenn wir uns zum 3. Fragment bewegen. Kurz gesagt, es gibt drei Fragmente im Speicher. Einer ist aktuell, der zweite ist vorläufig und der dritte ist der nächste. –

+0

Ja, Sie haben Recht. Sie können versuchen, ein Array von View zu erstellen, und dann den Bearbeitungstext von fragrment 2 von onclick listener löschen. Ich denke, Sie können auf den Edittext von Fragment 2 aus Fragment 3 mit Blick auf Fragment 2 zugreifen. – Lcukerd

0

Verwenden Sie eine Schnittstelle, um zwischen Fragmenten zu kommunizieren. Sie können mehr darüber in den Android Developer Docs lesen.

https://developer.android.com/training/basics/fragments/communicating.html

Im Lebenslauf von Ihrem Fragment 3 müssen Sie eine Methode aus Ihrer Schnittstelle aufrufen, indem Sie Ihre Aktivität implemetend werden müssen. Dann muss Ihre Aktivität Fragment 1 und Fragment 2 benachrichtigen, um ihre Ansichten zu aktualisieren.

Ich hoffe, dies hilft Ihnen.

+0

Diese Technik funktioniert nur, wenn Fragmente im Speicher sind, aber wenn wir 5 Fragmente haben, dann nur 2 bis 3 im Speicher. Andere beeinflussen diese Technik nicht –

+0

Das Problem ist, dass Sie nicht den Verweis auf die anderen Fragmente haben? Versuchen Sie, einen [EventBus] (https://github.com/greenrobot/EventBus) zu verwenden. Damit könnten Sie ein Ereignis von einem Fragment auslösen und dieses Ereignis von den anderen Fragmenten abhören. – mr90