2017-06-01 2 views
1

In Android habe ich einen Bildschirm mit Einstellungsmenü, beim Laden des Bildschirms Ich zeige Nachricht mit ProgressDialog "Bitte warten. Während Bildschirm lädt", bis die Suche abgeschlossen ist.Android Multitasking, wenn ProgressDialog in Bildschirm zeigt

Ich möchte das Einstellungsmenü auf dem Bildschirm aufrufen, wenn die Suche gerade läuft und die ProgressDialog weiterhin auf dem Bildschirm angezeigt wird.

Ich versuchte progressDialog.cancel(), aber dies verbirgt die Fortschrittsdialogmeldung und dann erlaube mir das Menü. Aber ich möchte die Dialogmeldung beim Zugriff auf das Menü anzeigen. Ist es möglich, die Fortschrittsanzeige anzuzeigen, wenn der Benutzer auf das Einstellungsmenü zugreift?

+2

Es ist irgendwie widersprüchlich „Bitte warten“ zu sagen, während es dem Benutzer ermöglicht den Zugriff auf, was es für wartet. Sie müssen möglicherweise klarer sein, was Sie erreichen möchten. Die nächste Sache, an die ich denken kann, ist die Verwendung einer Benachrichtigung anstelle eines Fortschrittsdialogs. – codeMagic

+0

Ich möchte die Fortschrittsdialognachricht für den Benutzer anzeigen, bis die Suche abgeschlossen ist. Wenn die Suchoperation noch läuft, sollte ich in der Lage sein, auf das Menü zuzugreifen, das in demselben Bildschirm auch den Fortschrittsdialog anzeigen sollte, weil Suche noch nicht vorbei ist. –

+1

Verwenden Sie auf diese Weise keinen ProgressDialog. Sie können eine Ansicht (wie eine Textansicht) hinzufügen und während der Suche die Sichtbarkeit ändern. Klingt immer noch verwirrend für mich gedacht – codeMagic

Antwort

1

Von Ihren Anforderungen sollten Sie wahrscheinlich kein ProgressDialog verwenden, da es die Benutzeraktionen "sperrt", bis Sie es abbrechen (oder der Benutzer es durch Drücken der Zurück-Schaltfläche abbricht).

wäre eine andere Lösung, die eine Ansicht mit einer zentrierten ProgressBar und einem TextView und dann GONE seine ursprüngliche Sichtbarkeit gesetzt zu schaffen sein, sobald Sie Ihre Suche starten laden, können Sie diese Ansicht Sichtbarkeit VISIBLE und alles andere zu GONE ändern (außer den Dingen, die du sehen möchtest, wie dein Menü).

Mit dieser sagte, Du so etwas wie der Screenshot unten bekommen:

Sample loading screen

Auf diese Weise der Benutzer in der Lage sein wird, mit anderen Komponenten auf dem Bildschirm wie der Zugriff auf das Einstellungsmenü zu interagieren.

Der XML-Code ist wie folgt:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:visibility="gone"> 

    <ProgressBar 
     android:id="@+id/progressBar" 
     style="?android:attr/progressBarStyle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:indeterminate="true" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     app:layout_constraintBottom_toBottomOf="parent"/> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="8dp" 
     android:text="LOADING..." 
     app:layout_constraintTop_toBottomOf="@+id/progressBar" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent"/> 

</android.support.constraint.ConstraintLayout> 
+0

Ich habe ProgressBar und TextView benutzt, es funktioniert, danke für die Antwort Mauker. –

+0

Sie sind herzlich willkommen! Vergiss nicht, es als akzeptiert zu markieren :) – Mauker