0

Ich entwickle eine Android-App, in der ich einige Daten von Firebase herunterladen und in meiner App anzeigen werde.So zeigen Sie eine Snackbar nur an, wenn die Fortschrittsanzeige sichtbar ist und nicht, wenn sie unsichtbar wird. Siehe Details

Ich habe eine ProgressBar eingestellt, die beim Start der Aktivität sichtbar wird und unsichtbar wird, wenn die Daten vollständig geladen sind.

Ich habe eine Handler eingerichtet, dass nach 5 Sekunden, wenn der Fortschrittsbalken sichtbar ist, eine Snackbar würde angezeigt werden. Das Problem ist, dass snackbar angezeigt wird, auch wenn der Fortschrittsbalken vor 5 Sekunden unsichtbar wird.

Hier ist, was ich getan habe:

Handler slowInternetConnection = new Handler(); 
      slowInternetConnection.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        if (progressBarLoadingRequests.getVisibility() == View.VISIBLE) { 
         snackbar = Snackbar 
           .make(coordinatorLayout, "It seems there is some problem with the network. Please wait...", Snackbar.LENGTH_LONG); 
         snackbar.setDuration(Snackbar.LENGTH_INDEFINITE); 
         snackbar.show(); 
        } else { 
         Toast.makeText(getBaseContext(), "not showed", Toast.LENGTH_SHORT).show(); 
        } 
       } 
      }, 5000); 

Ich möchte wissen, dass auf diese, ob die Überprüfung: progressBarLoadingRequests.getVisibility() == View.VISIBLE Bedingung, um herauszufinden, angemessen ist, wenn Fortschrittsbalken sichtbar oder unsichtbar ist?

Oder was ich noch tun kann, um zu erreichen, was ich will.

Bitte lassen Sie es mich wissen.

Antwort

0

Dieser Vergleich sollte gültig sein. Ich habe es an einer Probe getestet, die ich mit einem Fortschrittsbalken habe und die Aussage funktioniert.

Sie könnten es jedoch testen, indem Sie eine ProgressDialog verwenden, die eine eingebaute Funktion isShowing() hat. Es ist einfacher als die Verwendung einer ProgressBar, da Sie sie nicht in Ihr Layout einfügen müssen, aber das Layout wird eingefroren, bis das Dialogfeld geschlossen wird.

+0

Wenn der Vergleich gültig ist, warum wird snackbar angezeigt, auch nachdem der Fortschrittsbalken nicht mehr sichtbar ist? –

+0

Ihr Code funktioniert, wenn ich ihn in meiner App verwende. Das Problem muss mit etwas außerhalb Ihres Codes hier sein. Ich würde annehmen, dass Ihre 'progressBarLoadingRequests' eine öffentliche Variable ist. Vielleicht wird es irgendwo zurückgesetzt und bezieht sich nicht mehr auf die aktuelle Fortschrittsleiste – user3331142