2017-06-27 5 views
-4

Je travaille sur une application avec quelques problèmes mathématiques. J'ai fait une photo dans le photoshop et sous l'image il y a un editText et un bouton. Tout va bien, mais quand je clique sur le bouton quand editText est vide, l'application se bloque. J'ai essayé des exemples d'autres questions, mais ils ne m'ont pas aidé.App se bloque sur le bouton cliquez avec edittext vide

public class Start1Activity extends AppCompatActivity { 

Button btn; 

public void displayResult(String result) { 
    Toast.makeText(Start1Activity.this, result, Toast.LENGTH_SHORT).show(); 
} 

public void guess(View view){ 
    final EditText EditText2 = (EditText) findViewById(R.id.editText2); 

    final int guessNumber = Integer.parseInt(EditText2.getText().toString()); 

    if (guessNumber == 3){ 
     displayResult("That's right! Click once again for next level"); 
     btn = (Button) findViewById(R.id.bt3); 
     btn.setOnClickListener(new View.OnClickListener(){ 
      @Override 
      public void onClick(View view){ 
       if(EditText2.getText().toString().isEmpty()){ 
        displayResult("Please enter some number"); 
       } 
       Intent anythingintent=new Intent(Start1Activity.this,Start2Activity.class); 
       startActivity(anythingintent); 
      } 
     }); 
    } 
    else{ 
     displayResult("Wrong. Try again!"); 

    } 
} 
+0

Vous devriez instancier les vues dans la méthode 'onCreate()' pas sur 'onClick()' – GGWP

Répondre

0

Il y a pas mal de choses qui ne vont pas ici, mais le titre est que vous faites les choses dans le mauvais ordre. Vous devriez faire toutes les vérifications de votre EditText dans onClick, sinon l'application pourrait lancer une exception NullPointerException. Le code ci-dessous devrait fonctionner pour vous.

public void guess(View view){ 
    final EditText editTextField = (EditText) findViewById(R.id.editTextField); 
    btn = (Button) findViewById(R.id.bt3); 

    final int guessNumber = Integer.parseInt(editTextField.getText().toString()); 

    btn.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View view){ 
      if(editTextField.getText().toString().isEmpty()) { 
       displayResult("Please enter a number"); 
      } 
      else if (!(guessNumber == 3)) { 
       displayResult("Wrong. Try again!"); 
      } 
      else { 
       displayResult("That's right! Click once again for next level"); 
       Intent anythingintent=new Intent(Start1Activity.this,Start2Activity.class); 
       startActivity(anythingintent); 
      } 
     } 
    }); 
} 
+0

Merci beaucoup, mec. Cela signifie beaucoup pour moi. J'ai commencé à travailler sur Android il ya quelques jours et jusqu'à récemment, je n'avais aucun contact avec la programmation, donc c'est tout nouveau pour moi. :) –

+0

Mon plaisir, heureux codage! –

0

Afin d'éviter NumberFormatException avec parseInt(), assurez-vous plus tôt (pas onClick()) qu'une valeur est entrée.