2017-08-28 1 views
0

J'utilise une bibliothèque Seekbar. Lorsque je fais glisser le chercheur, je m'attends à ce que la textview soit mise à jour avec la valeur du chercheur mais malheureusement, mon application tombe en panne. Je reçois une erreur qui dit "ressource introuvable sur le TextView". Le code est ci-dessous:Modifier la valeur TextView dans une classe de fragmentation à l'aide de Seekbar

RangeSeekBar seekBar1; 
seekBar1 = (RangeSeekBar)rootView.findViewById(R.id.seekBar); 

seekBar1.setValue(10); 
seekBar1.setOnRangeChangedListener(new RangeSeekBar.OnRangeChangedListener() { 
     @Override 
     public void onRangeChanged(RangeSeekBar view, float min, float max, boolean isFromUser) { 
      seekBar1.setProgressDescription((int)min+"%"); 
      TextView txtAmount; 
      txtAmount = (TextView)rootView.findViewById(R.id.txtAmount); 
      txtAmount.setText((int) min); 
     } 
}); 

Répondre

2

Solution: Vous ne pouvez pas définir int à la TextView comme ça, essayez ceci:

txtAmount.setText(Float.toString(min)); 

La surcharge que vous utilisez rechercherait une chaîne identifiant de ressource, qui n'existe pas dans ce cas. Voici le correct one qui prend une CharSequence en argument (string is a CharSequence).


Bon à savoir: Si vous êtes maintenant comment se demandent un int peut être un argument pour setText, il est tout à fait simple. Dans votre application, vous pouvez avoir un fichier strings.xml qui définit un ensemble de chaînes de ressources à utiliser dans l'application:

<resources> 
    <string name="test">This is a test</string> 
</resources> 

Avec cette définition, vous pouvez afficher le texte sur votre TextView comme ceci:

txtAmount.setText(R.string.test); 
+0

Merci pour la réponse. –

0

Si vous transmettez un entier à setText, android attend que la valeur soit une ressource. Le système essaie de trouver une ressource dont l'identifiant est égal à min. Vous devez convertir min en une chaîne.

Donc, pour changer de travail txtAmount.setText((int) min);-txtAmount.setText(String.valueOf(min));