2017-09-03 17 views
-2

Donc, je développe un programme Android qui affiche mon âge étant donné leur année de naissance.Mais mon application ne montre aucune réponse, il montre juste 0 lorsque le bouton est enfoncé. Pouvez-vous s'il vous plaît suggérer où je vais mal.Et dites-moi comment afficher la différence entre 2017 - myAge.Comment obtenir mon affichage sur mon texteView dans android?

public class MainActivity extends AppCompatActivity { 

Button press; 
EditText editText; 
TextView enterText; 
int myAge; 
int yearOfBirth; 
int year = 2017; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    editText = (EditText)findViewById(R.id.editText) ; 
    enterText = (TextView)findViewById(R.id.entertext); 
    press = (Button)findViewById(R.id.press); 

     try 
     { 
      yearOfBirth = Integer.parseInt(editText.getText().toString()); 

      }catch(NumberFormatException e) 
      { 
       e.printStackTrace(); 
      } 



      press.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        myAge = yearOfBirth; 
        enterText.setText(String.valueOf(myAge)); 
       } 
      }); 
    } 
} 

Screenshot:

enter image description here

+2

Vous devriez obtenir la valeur de edittext à partir de votre écouteur de clic. Actuellement, vous obtenez la valeur du texte d'édition lorsque votre application démarre (onCreate). Si vous voulez obtenir la valeur du texte d'édition lorsque vous appuyez sur un bouton, vous devez entrer dans onClickListener – swerly

+0

Et pour obtenir la sortie correcte soustraire 'year' de' yearOfBirth' – Blasanka

Répondre

1

supprimer

yearOfBirth = Integer.parseInt(editText.getText().toString()); 

dans le bloc try et l'ajouter à l'intérieur du bloc onClick.

et au lieu de

myAge = yearOfBirth; 

écrire

int currYear = Calendar.getInstance().get(Calendar.YEAR); 
myAge = currYear - yearOfBirth; 

mettre année = 2017 ne fonctionnera que pour cette année qui est la raison pour laquelle je vous suggère d'utiliser la classe de calendrier qui vous donne l'année exacte.

+0

Merci beaucoup le code fonctionne comme charme.I je suis nouveau à android et cela m'aide à apprendre de nouvelles choses rapidement. merci –

1

Il semble que vous manque juste une étape de calcul de l'âge.

Vous aller chercher le yearOfBirth correctement, mais vous configurez juste myAge à elle, ne pas faire quelque chose comme

myAge = year - yearOfBirth 

Comme ça.

press.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        myAge = year - yearOfBirth; // Here. 
        enterText.setText(String.valueOf(myAge)); 
       } 
      }); 
0

On dirait que votre logique de calcul de l'âge est erronée.

myAge = year - yearOfBirth; //calculate age 

Cela devrait fonctionner.