android应用程序由于EditText为空而强制关闭

android应用程序由于EditText为空而强制关闭,android,Android,我找遍了这个地方,还没找到答案。 代码如下: 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.

我找遍了这个地方,还没找到答案。 代码如下:

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(); }

            }});}}
package hardy.scl;
导入android.app.Activity;
导入android.os.Bundle;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ImageView;
导入android.widget.Toast;
公共课zody扩展活动{
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
最终按钮b=(按钮)this.findViewById(R.id.Button01);
最终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(新的OnClickListener(){
公共void onClick(视图v){
int dd=Integer.parseInt(et.getText().toString());
int mm=Integer.parseInt(et2.getText().toString());

如果(dd>=21和和毫米==21和和和毫米==21和和和毫米==21和毫米(dd>=21和毫米==21和毫米=3 124124; dd=21和和毫米=21和毫米=21和和毫米=21和和毫米=21和毫米=21和毫米=21和毫米=21和毫米=21和毫米=21和毫米=21和毫米=21和毫米(dd)D=21和毫米=21和毫米=21和毫米=4和毫米=4 \124四四四和毫米=4\124四四四四四和毫米((\124四)和毫米=12)和毫米=2和毫米=2和毫米=2和毫米=2和毫米=2和毫米=4和毫米=4和毫米=4和毫米=4和毫米=4\\\\124;dd=2和毫米=4和毫米=4和毫米=4124| dd只是一个猜测,因为您没有发布日志,但是如果编辑文本为空

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

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

您无法从空字符串中解析int。

只是猜测,因为您没有发布日志,但是如果editText为空

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

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

您无法从空字符串中解析int。

您的问题是在调用
Integer.parseInt()时。
如果输入为“”,则
Integer.parseInt
抛出
NumberFormatException
。您需要显式捕获它,因为它是运行时异常。

您的问题是在调用
Integer.parseInt()时.
如果输入为“”,则
Integer.parseInt
抛出
NumberFormatException
。您需要显式捕获它,因为这是一个运行时异常。

我遇到了相同类型的问题,而Amir是正确的!我在此处添加了try-and-catch的代码,因为有些人不知道如何捕获NumberFormatException

try {

} 
catch (NumberFormatException e) { }

我也有同样的问题,Amir说得对!我添加了try and catch here encase的代码,有人不知道如何捕获NumberFormatException

try {

} 
catch (NumberFormatException e) { }

从logcat中发布stacktrace。(因为已经有很好的答案和一些建议)1.您应该考虑使用代码格式化程序(ctrl+alt+f在eclipse中稍微格式化代码)2.使用一些更好的变量名。dd和et非常神秘…从logcat中发布stacktrace。(因为已经有很好的答案和一些建议)1.您应该考虑使用代码格式化程序(ctrl+alt+f在eclipse中稍微格式化代码)2.使用一些更好的变量名。dd和et非常神秘。。。