2012-08-05 12 views
7

Ich entwickle eine App mit Fragmenten in Android. Ich habe diese drei Registerkarten:Verhindern, dass das nächste Fragment (Tab) mit Preload geladen wird ViewPager

User app screenshot

Ich weiß, dass nicht möglich ist, die Last eines Fragments auf jeder Seite (vorherige und nächste) so weit wie der Minimalwert von setOffScreenPageLimit() 1 zu verhindern, aber bedeutet es, dass, wenn ich dadurch wird eine ProgressDialog auf dem onPreExecute Methode eines AsyncTask läuft innerhalb Descargas Fragment zeigen wollen, dass, wenn ich auf die Capturador nav dass ProgressDialog notwendigerweise geladen werden? Wenn ja, habe ich keine Ahnung, wie ich den Benutzer wissen lassen soll, dass ich die Pakete herunterlade (das ist es, was Descargas tut, um XML zu parsen).

Dank im Voraus;)

+1

Diese Frage ist gut formuliert. Ich stehe vor einer ähnlichen Herausforderung wie dieser, wo ich "Dialoge" in verschiedenen 'Fragmenten' zeigen muss, aber ich kann nicht, weil sie sich überlappen. – tolgap

+0

Lasst uns dann hoffen, dass uns jemand hilft. Ich muss zugeben, dass ich mit Fragmenten ein wenig oder mehr verwirrt bin, aber ich weiß nicht, wie ich dieses Problem beheben kann. –

+0

Es ist ziemlich dumm, dass 'setOffScreenPageLimit()' immer auf 1 voreingestellt ist. – tolgap

Antwort

4

einbetten a ProgressBar- auf dem Descargas Fragmente. Oder überlagert einen unbestimmten Fortschrittsbalken über der Mitte des Fragments, während es geladen wird.

Dialoge sind wirklich Teil der Aktivität, es wäre nicht sinnvoll, dass es nur für eine der Seiten gilt.

Am Ende des Tages, obwohl, wenn Sie über die Verwendung Dialoge bestehen müssen, können Sie eine onPageChangeListener

viewPager.setOnPageChangeListener (OnPageChangeListener) umzusetzen;

Und Sie können den entsprechenden Dialog aufrufen, wenn das ausgewählte Fragment ausgewählt ist und das Gegenteil, wenn Sie weg navigieren.

+0

Vielen Dank für Ihre Antwort. Dann werde ich versuchen, etwas Konsequentes und in Übereinstimmung mit den guten Gewohnheiten des Programmierens zu tun, wenn ich bedenke, dass ich gerade lerne. Ich denke, der gute Weg wäre dann die Grafik-Ereignisse wie Dialoge oder Toast in der Hauptaktivität nicht in den Fragmenten zu kontrollieren. Ich würde mich freuen, wenn mir jemand Ideen geben kann. Ich möchte nicht, dass einer von euch meine Arbeit macht, sondern nur Hinweise oder Anweisungen. –

+0

Antwort auf mich selbst und dank Pork habe ich schließlich eine unbestimmte ProgresBar implementiert, die im Layout definiert ist, die ich mit ProgressBar.setVisibility (View.GONE) verberge, wenn das Descargas-Fragment die gewünschten Pakete erfolgreich abgerufen hat und so weiter. Ich hoffe, es ist keine schäbige Lösung, denn mit meinem Wissen, das nicht so weit fortgeschritten ist, kann ich nicht einmal die Option OnPageChangeListener implementieren. –

+0

Das klingt perfekt Keyser! Sie können sicherlich Dialoge aus einem Fragment verwenden, aber ein Fragment in einem Viewpager ist etwas kompliziert. Sie müssen darauf achten, dass der Dialog wirklich verhindert, dass der Benutzer andere Aktionen ausführt. Wenn sie jedoch andere Dinge haben, die sie während des Wartens tun können, ist es am besten, keinen Dialog zu verwenden. Für mich bedeutet das, dass Fortschrittdialog ein schneller Hack ist, der normalerweise nicht in die Endlösung der meisten Leute gelangen sollte. Sie können Dialoge von einem Fragment aus steuern, das ist in Ordnung, seien Sie sich jedoch bewusst, dass der Benutzer nur wirklich über die Aktivität informiert ist. –