我正在努力创建一个非常简单的应用程序。有产品名称和匹配的产品编号。用户输入一个数字,并显示相应的名称。
editTextField1
=用户类型数
button1
=搜索按钮
editTextField2
=产品名称出现
现在我的代码正常运行,但只有一个问题,当用户没有输入任何内容并点击button1
应用程序崩溃时。所以我可能需要某种异常处理程序?我正在努力让我的头围绕它。我知道我是如何编码的,通过声明大量的变量,是啰嗦的哈哈。
public class MainActivity extends AppCompatActivity {
private Button button1;
private EditText editText1;
private EditText editText2;
private int a = 123;
private String b = "TV";
private int c = 333;
private String d = "Radio";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button) findViewById(R.id.button1);
editText1 = (EditText) findViewById(R.id.editText1);
editText2 = (EditText) findViewById(R.id.editText2);
View.OnClickListener myOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
double pNumber = Double.parseDouble(editText1.getText().toString());
if(pNumber == a){
editText2.setText(b);
}
else if (pNumber == c){
editText2.setText(d);
}
else
editText2.setText("Invalid Product Number");
}
};
button1.setOnClickListener(myOnClickListener);
答案 0 :(得分:0)
使用此:
View.OnClickListener myOnClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
String text = editText1.getText().toString();
if(!TextUtils.isEmpty(text)) {
// EditText1 is not empty
try {
double pNumber = Double.parseDouble(text);
if(pNumber == a)
editText2.setText(b);
else if (pNumber == c){
editText2.setText(d);
else
editText2.setText("Invalid Product Number");
}
catch(NumberFormatException e) {
// Invalid input, not a double
editText2.setText("Invalid double input");
}
}
else {
// EditText1 is empty
editText2.setText("EditText1 is empty");
}
}
};
答案 1 :(得分:0)
除了Spartas答案之外,检查有效的双输入也是一个好主意:
try {
double pNumber = Double.parseDouble(text);
catch(NumberFormatException e){
//Do ExceptionHandling
}
答案 2 :(得分:0)
基本上有两种方法可以处理这个
1)使用try - catch
try{
double pNumber = Double.parseDouble(editText1.getText().toString());
}catch(NumberFormatException e){
//show a message to user
}
2)使用输入卫生
String number = editText1.getText().toString();
boolean isNumber = number.matches("^-?\\d+$"));//haven't tried this though
if(!isNumber) //if not number
//show a message to user