2016-09-18 5 views
0

Ich habe ein Fragment und an seinem onStart(), habe ich eine Menge von BD-Abfragen gemacht, die für 15 Sekunden lang sind. Ich möchte einen Fortschrittsdialog mit einem "Ladekreis" zeigen. Meine App, hat nur eine Aktivität, die Main. Dies startet das erste Fragment und von diesem springt ich zu einem anderen Fragment und dasselbe für das nächste. Um von einem Fragment zum anderen zu gelangen, verwende ich die nächste statische Methode.Dialog anzeigen, auf Fragment funktioniert

Ich habe versucht, einen Thread in dieser Methode, was den Fortschritt Dialog startet, aber es hat nicht funktioniert. Ich habe versucht, den Dialog mit der OnCreate() Methode des Fragments zu starten, und das hat auch nicht funktioniert.

Was kann ich tun?

Vielen Dank.

(Bearbeiten) Ich habe versucht, den Fortschrittsdialog innerhalb des Fragments zu starten, bei onCreateView() und bei onViewCreated(). Es hat nicht funktioniert, aber wenn ich Schritt für Schritt debugge, sehe ich, dass in dem Moment, in dem der Fluss zum onStart() geht (wo es für 10 Sekunden einen DB benutzt), der ProgressDialog stoppt.

Durch diesen Test verstehe ich, dass der ProgressDialog korrekt angezeigt wird, aber wenn ich auf onStart() gehe, verschwindet es.

(Edit)

Das Problem ist, dass bei der onStart() des Fragment, ich bin auf den Ansichten arbeiten, Elemente addking. Ich brauche, dass, während diese Elemente laden, ein Dialog gezeigt wird, weil jetzt, für den Benutzer, es scheint, dass die App sttoped ist, während es lädt. Ich würde so etwas wie dieses brauchen:

public static startFragment(FragmentTransaction FT, Fragment newFragmentToOpen) 
{ 
    startProgressDialog(); 

    FT.replace(R.id.container, newFragmentToOpen); 
    FT.addToBackStack(null); 
    FT.commit(); 

    stopProgressDialog(); 
} 

Aber es nicht funktioniert, weil der Fortschritt Dialog gerade beginnt, wenn der Blick auf das Fragment vollständig geladen ist.

+0

fügen Sie bitte den Code von, was Sie früher versuchten, wird helfen, Frage gut zu verstehen. – W4R10CK

+0

Es ist zu viel Code. Wie ich auf der Post sage, ist meine App auf Fragmente basiert. Ich habe viele Fragmente, die man einander nennt. Ich benutze dafür eine statische Methode (gezeigt im ersten Post). An den Fragmenten, am OnStart() mache ich viele DB-Sätze, dann brauche ich das, während die 10 Sekunden, die es lädt, etwas gezeigt werden. –

Antwort

0

angezeigt ich die Lösung gefunden.

  1. Um STATIC vars zu erstellen. Diese werden die Informationen enthalten, die ich in OnStart() des Fragments verwenden werde.
  2. Bevor Sie den Übergang des Fragments vornehmen, starten Sie den Fortschrittsdialog.
  3. Starten Sie nach dem Starten des Fortschrittsdialogs einen THREAD.
  4. (IN DEN GEWINDE) Laden Sie die Informationen in die statischen Variablen.
  5. (IN DEN GEWINDE) Nach dem Laden aller Informationen, schließen Sie den Fortschrittsdialog.
  6. (IN DEN GEWINDE) Aufruf an das Fragment zu laden.
  7. Ende des Threads.
  8. In de Fragment, bei OnStart(), nehmen Sie die Informationen aus dem STATIC vars.
0

Sie sollten versuchen, den Dialog in onCreateView() da dies zeigt, wo die UI-Komponenten in einem Fragment

+0

Es funktioniert nicht. Ich habe dies: private statische ProgressDialog espera; @ Nullable @ Aufschalten Öffentlichkeit onCreateView (LayoutInflater inflater, Viewgroup Behälter, Gebündelt savedInstanceState) { LayoutInflater inflador; inflador = Inflater; espera = neuer ProgressDialog (inflador.getContext()); espera.setMessage ("Laden"); espera.setIndeterminate (wahr); espera.show(); Rückgabe inladador.infllate (R.layout.layout_fragment_clasificaciones_wec, container, false); } Ich versuchte auch, die "Show" bei onStart() zu nennen; –

+0

Haben Sie ProgressDialog (getActivity()) anstelle von neuem ProgressDialog (inflador.getContext()) versucht –

+0

Es funktioniert auch nicht. Ich versuche, mit onViewCreated() -Methode zu arbeiten, aber ohne Ergebnisse. –

Verwandte Themen