2
votes

Comment arrêter la barre de progression après avoir reçu une réponse du serveur

J'essaye d'arrêter la barre de progression après avoir reçu une réponse du serveur. Voici le code xml que j'ai utilisé

activity.xml

 var progressBar =  findViewById(R.id.progressBar) as ProgressBar
 doAsync {
            try {
                    progressBar.setVisibility(View.VISIBLE);
                    appList = getAppList(requestBody, LAUNCHER_BASE_URL)
                    Log.d("App list =", appList.toString())
                    appInfoList = populateList()
                    progressBar.setVisibility(View.GONE);
            } catch (e: Exception) {
                progressBar.setVisibility(View.GONE);
                Log.e("Exception-launcher", e.toString())
            }

activity.kt p>

  <ProgressBar
        android:layout_weight="1"
        android:id="@+id/progressBar"
        android:indeterminate="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:minHeight="40dp"
        android:minWidth="40dp"
        tools:ignore="MissingConstraints" />

D'après le code ci-dessus, la barre de progression ne s'arrête pas même après avoir obtenu la réponse. Toute aide serait appréciée

J'ai essayé mais la page devient vide après l'arrêt de la barre de progression


3 commentaires

Parce que votre barre de progression a disparu alors qu'elle lève une exception, pas à ce moment-là où vous obtenez une réponse de succès.


vous vouliez donc montrer la réponse à l'utilisateur après l'arrêt de la barre de progression? et votre affichage devient vide après la disparition de la barre de progression. Cela signifie que vous n'avez pas joint votre réponse à votre conception.


Double possible de Android - Impossible de masquer la barre de progression


4 Réponses :


0
votes

Vous masquez la barre de progression uniquement si le code entre dans Exception (bloc catch).

Déplacez votre code après le bloc catch, comme suit:

    try {
         progressBar.setVisibility(View.VISIBLE);
         appList = getAppList(requestBody, LAUNCHER_BASE_URL)
         Log.d("App list =", appList.toString())
         appInfoList = populateList()
    } catch (e: Exception) {
         Log.e("Exception-launcher", e.toString())
    }
    progressBar.setVisibility(View.GONE);


3 commentaires

J'ai essayé et la barre de progression s'arrête mais le problème est que l'écran devient vide après que la barre de progression soit partie


@ChristinaVarghese pouvez-vous s'il vous plaît ajouter votre code XML?


essayez ce lien stackoverflow.com/questions/36918219/...



3
votes

Ajoutez progressBar.setVisibility (View.INVISIBLE); dans votre clause try également, car dans son état actuel, il ne supprimera le chargement que lorsque l'API échoue:

 var progressBar =  findViewById(R.id.progressBar) as ProgressBar
 doAsync {
            try {
                    progressBar.setVisibility(View.VISIBLE);
                    appList = getAppList(requestBody, LAUNCHER_BASE_URL)
                    Log.d("App list =", appList.toString())
                    appInfoList = populateList()
                progressBar.setVisibility(View.INVISIBLE);
            } catch (e: Exception) {
                progressBar.setVisibility(View.INVISIBLE);
                Log.e("Exception-launcher", e.toString())
            }


3 commentaires

J'ai essayé et la barre de progression s'arrête mais le problème est que l'écran devient vide après que la barre de progression soit partie


Je ne suis pas sûr de la présentation de la mise en page, mais essayez View.INVISIBLE et voyez si cela change quelque chose.


Merci beaucoup, cela fonctionne. Au lieu de View.GONE .J'ai utilisé View.INVISIBLE



1
votes

essayez le code ci-dessous

doAsync {
    try {
        progressBar.visibility = View.VISIBLE
        appList = getAppList(requestBody, LAUNCHER_BASE_URL)
        Log.d("App list =", appList.toString())
        appInfoList = populateList()
    } catch (e: Exception) {
        progressBar.visibility = View.GONE
        Log.e("Exception-launcher", e.toString())
    } finally {
        progressBar.visibility = View.GONE
    }


4 commentaires

J'ai essayé et la barre de progression s'arrête mais le problème est que l'écran devient vide après que la barre de progression soit partie


je suppose que le problème est dans votre xml


il n'y a pas non plus de problème dans xml que vous avez joint ci-dessus


Je suppose que c'est votre composition de vue qui crée un problème, vous devriez essayer View.INVISIBLE au lieu de View.GONE



0
votes

Comment gérer View dans doAsync Normalement, cela devrait représenter de cette manière

 val progressBar =  findViewById<ProgressBar>(R.id.progressBar)
 progressBar.visibility = View.VISIBLE
 doAsync {
      try {
         appList = getAppList(requestBody, LAUNCHER_BASE_URL)
         Log.d("App list =", appList.toString())
         appInfoList = populateList()              
      } catch (e: Exception) {
          e.printStackTrace()
      }

      uiThread {
         progressBar.visibility = View.GONE
      }
 }


0 commentaires