2010-12-21 34 views
0

我已經遍地搜索,並沒有能夠找到答案。 這裏是代碼:Android應用程序強制關閉,因爲空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(); } 

      }});}} 

是什麼,即時通訊上來錯誤,導致該應用強行關閉每當我按一下按鈕如果兩個或任何edittexts是空的?

+0

從您的logcat發佈您的stacktrace。 – Falmarri 2010-12-21 16:13:42

回答

0

只是一個猜測,因爲你沒有張貼您的logcat的,但如果edittexts是空

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

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

不能解析int的列空字符串。

3

您的問題是在致電Integer.parseInt().時如果輸入是「」,則Integer.parseInt將拋出NumberFormatException。您需要明確地捕獲它,因爲它是運行時異常。

0

我有同樣類型的問題,阿米爾是正確的!我添加了代碼嘗試並捕獲在這裏包裝某人不知道如何捕獲一個NumberFormatException

try { 

} 
catch (NumberFormatException e) { }