2017-10-04 1 views
0

Besoin d'aide analyse, j'ai essayé "portage" mon projet de rouleau de dés à Android en utilisant Android Studio, j'ai la plupart des valeurs de contrôleur remplacés par leurs homologues widget Android, un problème, je ne suis pas sûr comment analyser correctement les valeurs de widget en un Int. Je les ai marqués avec des commentaires gauche alignés ci-dessous.Parsing problème widget android à int

modificateur

est un résultat EditText
est un TextView

J'ai essayé beaucoup de combinaisons, ce qui est le plus récent. Celui qui fonctionnait quand il était pur java était .getValue().toString().trim() mais je ne peux pas utiliser .getValue pourquoi est-ce?

public void onStart() 
{ 
    super.onStart(); 
    percentile.setOnClickListener(new View.OnClickListener() 
    { 
    @Override 
    public void onClick (View v) 
    { 
     { 
      //issue is here 
      int total = Nat20_core.roll10(cumulative.isChecked(), 
         Integer.parseInt (String.valueOf(modifier)), 
         Integer.parseInt(String.valueOf(result))); 
      //end issue 
      result.setText(String.valueOf(total)); 
     } 
     } 
    }); 
} 

J'ai aussi essayé dans un ancien programme mis

+0

quel est votre problème que vous rencontrez? –

+0

Veuillez prendre le temps de lire [this] (https://stackoverflow.com/help/how-to-ask) et formater votre question. – Ibo

+0

Re-formate la question, désolé pour le contenu précédent. – K1tfox

Répondre

0

Cela est dû au fait qu'il n'existe pas de méthode .getValue() pour le widget EditText et TextView. Pour EditText, vous pouvez utiliser getText() qui renvoie Editable. Donc, vous devez obtenir la chaîne à partir de toString(). Donc, vous devez utiliser:

modifier.getText().toString(); 

Pour TextView, vous pouvez utiliser getText() qui retourne un CharSequence. Vous devez également récupérer la chaîne à l'aide de toString(). Ainsi, vous pouvez utiliser la ligne ci-dessus aussi:

result.getText().toString(); 

Maintenant, vous devez convertir le code suivant:

int total = Nat20_core.roll10(cumulative.isChecked(), 
         Integer.parseInt (String.valueOf(modifier)), 
         Integer.parseInt(String.valueOf(result))); 

à:

int total = Nat20_core.roll10(cumulative.isChecked(), 
         Integer.parseInt (modifier.getText().toString()), 
         Integer.parseInt(result.getText().toString())); 
+0

Oh! merci beaucoup.J'ai essayé votre code recommandé mais l'application continue de s'écraser et je ne sais pas pourquoi. Y a-t-il autre chose qui me manque? – K1tfox

+0

le problème probablement dans votre 'Nat20_core.roll10()' méthode. Sachez que l'analyse d'une chaîne non numérique avec 'parseInt' entraînera une erreur. –

+0

Boolean int int est ce qui doit être passé. – K1tfox

0

Dans EditText et TextView, la "valeur" est "texte":

Integer.parseInt (modifier.getText() .toString())