2017-04-24 1 views
2

J'ai une barre de progression dans une page viewpager 0. Ceci est la barre de progression:problème auquel font face quand ProgressBar.setProgress (0)

<ProgressBar 
         android:id="@+id/mytask_today_progressBar" 
         style="?android:attr/progressBarStyleHorizontal" 
         android:layout_width="113dp" 
         android:layout_height="113dp" 
         android:indeterminate="false" 
         android:max="100" 
         android:progress="0" 
         android:progressDrawable="@drawable/custom_progress_small" 
         android:secondaryProgress="0" /> 

Maintenant, quand cette page est chargée, je mets la barre de progression à 0 et i Itineraire écran parfait comme ceci ci-dessous:

enter image description here

et c'est le code que j'utilise:

mainActivity.sout("per_mytask_today : "+per_mytask_today); 
    mytask_today_progressBar.setProgress(1); 
    mainActivity.sout("mytask_today_progressBar.getprogress() : "+mytask_today_progressBar.getProgress()); 

    mytask_week_progressBar.setProgress(0); 

    mytask_today_progresstxt.setText(1+""); 
    mytask_week_progresstxt.setText(0+""); 

et quand j'échange les pages de pager comme ceci et revenir à la même page, la barre de progression définie à 0 est modifiée. Comme ceci:

enter image description here

enter image description here

Comme vous pouvez le voir la barre de progression fixé à 1 (ou en fait toute autre valeur 1-100) ne change pas, seules les modifications de 0.

C'est le drawable je l'ai utilisé pour cela (est ce qui crée un problème):

<?xml version="1.0" encoding="utf-8"?> 

<item> 
     <!-- Our second ring --> 
     <shape android:shape="ring" 
      android:useLevel="true" 
      android:innerRadius="40dp" 
      android:thicknessRatio="8"> 
      <solid android:color="@color/colorPrimaryDark"> </solid> 
     </shape> 
    </item> 
</layer-list> 

+0

Je pense que votre dernière ligne de code fait toujours le texte à 0' et 'n'a pas d'importance ce que la valeur réelle est. 'mytask_week_progresstxt.setText (0 +" ")'. Donc, fondamentalement, vous devez changer le '.setText' pour être ce que jamais valeur et ne pas le rendre statique. – YourDevMinion

+0

Non, mais il fonctionne pour des valeurs comprises entre 1 et 100. seulement pour 0 il cause le problème –

Répondre

0

Son plus probable dépend de l'endroit où vous définissez les progrès. Idéalement, vous devriez mettre ce code à l'intérieur onPageSelected

viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

     } 

     @Override 
     public void onPageSelected(int position) { 

     //Set your progress here 

     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 

     } 
    }); 
+0

mais pourquoi ne pose-t-il pas problème quand je fixe la valeur autre que 0 –

+0

Vous avez probablement placé ce code de réglage quelque part à l'état initial qui appellent une fois quand votre appel de ViewPager et qui n'est pas supposé être appelé sur votre page glisser. – dhams