2010-12-21 5 views
0

J'ai cherché partout et n'ayant pas été en mesure de trouver la réponse. voici le code:android application force de fermeture en raison de vide EditText

package hardy.scl; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.Toast; 

public class zody extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     final Button b = (Button)this.findViewById(R.id.Button01); 
     final ImageView iv=(ImageView)this.findViewById(R.id.ImageView01); 
     final EditText et = (EditText)this.findViewById(R.id.EditText01); 
     final EditText et2 = (EditText)this.findViewById(R.id.EditText02); 

     b.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 


int dd = Integer.parseInt(et.getText().toString()); 

int mm = Integer.parseInt(et2.getText().toString()); 


      if (dd>=21&&mm==1||dd<=19&&mm==2){  
       iv.setImageResource(R.drawable.aq); 

      } 
      else if (dd>=20&&mm==2||dd<=20&&mm==3) { 
       iv.setImageResource(R.drawable.pi); 

      } 

      else if (dd>=21&&mm==3||dd<=20&&mm==4) { 
       iv.setImageResource(R.drawable.aries); 

      } 

      else if (dd>=21&&mm==4||dd<=21&&mm==5) { 
       iv.setImageResource(R.drawable.tau); 

      } 


      else if (dd>=22&&mm==5||dd<=21&&mm==6) { 
       iv.setImageResource(R.drawable.gem); 

      } 


      else if (dd>=22&&mm==6||dd<=22&&mm==7) { 
       iv.setImageResource(R.drawable.can); 

      } 


      else if (dd>=23&&mm==7||dd<=21&&mm==8) { 
       iv.setImageResource(R.drawable.leo); 



      } 


      else if (dd>=22&&mm==8||dd<=23&&mm==9) { 
       iv.setImageResource(R.drawable.virg); 

      } 

      else if (dd>=24&&mm==9||dd<=23&&mm==10) { 
       iv.setImageResource(R.drawable.lib); 

      } 

      else if (dd>=24&&mm==10||dd<=22&&mm==11) { 
       iv.setImageResource(R.drawable.sco); 

      } 

      else if (dd>=23&&mm==11||dd<=22&&mm==12) { 
       iv.setImageResource(R.drawable.sag); 

      } 

      else if (dd>=23&&mm==12||dd<=20&&mm==1) { 
       iv.setImageResource(R.drawable.cap); 

      } 
      if ((et.getText().length()<1)|| (et2.getText().length()<1)|| (et.getText().length()<1)&& (et2.getText().length()<1)){ 

       Toast.makeText(getApplicationContext(), "Oh! invisible D.O.B..nice!", Toast.LENGTH_LONG).show();} 

      else{ 

       Toast.makeText(getApplicationContext(), "ERRrr! Wrong D.O.B :/", Toast.LENGTH_LONG).show(); } 

      }});}} 

qu'est-ce qui im ​​doin mal qui cause l'application de forcer près chaque fois que je clique sur le bouton si les deux ou l'un des edittexts sont vides?

+0

Publiez votre stacktrace à partir de votre logcat. – Falmarri

+0

(comme il y a déjà de bonnes réponses quelques recommandations) 1. vous devriez penser à utiliser un formateur de code (ctrl + alt + f formate le code un peu en eclipse) 2. utiliser de meilleurs noms de variables. dd et et sont très cryptiques ... – WarrenFaith

Répondre

0

Juste une supposition puisque vous ne publiez pas votre logcat, mais si les edittexts sont vides

int dd = Integer.parseInt(et.getText().toString()); 

int mm = Integer.parseInt(et2.getText().toString()); 

Vous ne pouvez analyser un int sur une chaîne vide.

3

Votre problème est lors de l'appel Integer.parseInt(). Si l'entrée est "" alors Integer.parseInt lance NumberFormatException. Vous devez l'attraper explicitement car il s'agit d'une exception d'exécution.

0

J'avais le même type de problème et Amir avait raison! J'ai ajouté le code pour l'essayer et attraper ici encase quelqu'un ne sait pas comment attraper une exception NumberFormat

try { 

} 
catch (NumberFormatException e) { } 
Questions connexes