如果android中的语句问题

时间:2011-03-07 20:02:29

标签: java android if-statement

我有一个方法,可以点击按钮检查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

3 个答案:

答案 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)似乎更合乎逻辑,但那是我有点迂腐。