我搜遍了整个地方,但未能找到答案。 这是代码:
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为空,只要我点击按钮就会导致应用程序强制关闭,这是什么错误?
答案 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) { }