我有一个方法,可以点击按钮检查editText中的空值,如下所示:
public void myClickHandler09(View chv){
if (text9.equals("")){
text9.setText("0");
}else{
converter(text9);
}}
converter(text9);
方法如下所示:
public void converter(View view){
switch (view.getId()) {
case R.id.Button09:
RadioButton RadioButtons = (RadioButton) findViewById (R.id.RadioButton901);
float inputValue = Float.parseFloat(text9.getText().toString());
if (RadioButtons.isChecked()) {
text9.setText(String
.valueOf(convertRadioButtons(inputValue)));
}
break;
}}
private double convertRadiobuttons(float inputValue){
return inputValue * 6.4516;
}
这个方法比较大,但在这里我只调用了一个radiobutton来缩短它。 现在虽然if语句似乎绝对没有做任何其他代码的工作原理。如果我删除方法并重命名
converter(View view){
到
myClickHandler09(View view){
然后代码工作,直到你在EditText中输入一个空值(然后它崩溃)
我到底做错了什么?
注意:方法名称“myClickHandler09”链接到按钮为android:onClick in xml
答案 0 :(得分:1)
为什么不试试
if ("".equals(text9.getText())) {
} else {
}
你必须从getText()
而不是TextView
使用TextView执行equals
。
答案 1 :(得分:1)
您需要if("".equals(text9.getText().toString())) { ...
toString()
就在那里,因为TextView会返回CharSequence
,可能是也可能不是String
。
目前您正在比较TextView itself to ""
,而不是正在展示的String
。
修改 - 就崩溃而言,您还希望抓住Float.parseFloat()投掷的NumberFormatException
。
float inputValue = 1.0f; // some default value, in case the user input is bad.
try {
inputValue = Float.parseFloat(text9.getText().toString());
} catch (NumberFormatException e) {
// possibly display a red flag next to the field
}
答案 2 :(得分:0)
我对你的代码不理解的一件事是你打电话:
转换器(text9);
传入EditText,但是用函数名myClickHandler09替换转换器(View视图)(如此):
myClickHandler09(查看视图){
通过调用此函数按下按钮(如果您在xml布局onClick参数中定义了它)。
所以要将此行为与您当前的代码相匹配,请尝试以下方法:
public void myClickHandler09(View btnView){
if (text9.equals("")){
text9.setText("0");
} else {
converter(btnView);
}
}
我可能已经错过了你的帖子,但我认为这是你问题的一部分。而不是.equals(“”)我更喜欢(text9.toString()。length()> 0)似乎更合乎逻辑,但那是我有点迂腐。