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.
Wenn der Vergleich gültig ist, warum wird snackbar angezeigt, auch nachdem der Fortschrittsbalken nicht mehr sichtbar ist? –
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