由于空的EditText,android app强制关闭

时间:2010-12-21 16:09:14

标签: 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.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(); }

            }});}}

如果两个或任何一个edittext为空,只要我点击按钮就会导致应用程序强制关闭,这是什么错误?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

因为您没有发布您的logcat,但是如果edittexts为空

,那就是猜测
int dd = Integer.parseInt(et.getText().toString());

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

你不能用空字符串解析int。

答案 2 :(得分:0)

我遇到了同样类型的问题而且Amir正确!我添加了try的代码并在此处捕获encase某人不知道如何捕获NumberFormatException

try {

} 
catch (NumberFormatException e) { }