提取后方法调用不起作用

时间:2013-01-11 03:21:34

标签: java methods validation

我一直在尝试创建优化我的Android代码,方法是创建一个输入验证方法,然后调用它,但它不起作用。我试过调试但没有。 这是我第一次有这样的工作:

String s1 =startTime1.getText().toString();
if(TextUtils.isEmpty(startTime1.getText())){
    s1 = "00:00";
}
String e1 = endTime1.getText().toString();
if(TextUtils.isEmpty(endTime1.getText())){
    e1 = "00:00";
}

但是在将验证提取到此方法并在每次用户输入输入时调用它后似乎没有任何效果。

public void emptyInputValidation(EditText time, String timeToString){
    if(TextUtils.isEmpty(time.getText())){
        timeToString = "00:00";
    }           
}


compute.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v){

                try{
                    String s1 =startTime1.getText().toString();
                    emptyInputValidation(startTime1, s1);
                    String e1 = endTime1.getText().toString();
                    emptyInputValidation(endTime1, e1);
                    }
            catch (ParseException e){
                    e.printStackTrace();

                }     
}

提前感谢。

2 个答案:

答案 0 :(得分:0)

在您的函数的timeToString = "00:00";中,您将参数重新分配给"00:00",这不会反映在方法之外。这是更正后的代码:

public String emptyInputValidation(EditText time) {
    if(TextUtils.isEmpty(time.getText())){
        return "00:00";
    } else {
        return time.getText().toString();
    }           
}

然后只需致电String s1 = emptyInputValidation(startTime1);

答案 1 :(得分:0)

这是对象引用和参数传递如何在Java中工作的烦人部分之一。在我们的timeToString = "00:00";方法中设置emptyInputValidation不会反映在该方法之外。 Java通过值传递引用,这有点令人困惑。这意味着您调用字符串以更改它的任何方法都将反映在方法的范围之外,但是,赋值不会。

解决此问题的最简单方法是让它返回String

public String emptyInputValidation(EditText time)
{
    if(TextUtils.isEmpty(time.getText()) {
        return "00:00";
    }
    return time.getText();
}