1

入力検証メソッドを作成してそれを呼び出すことにより、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();

                }     
}

前もって感謝します。

4

2 に答える 2

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);

于 2013-01-11T03:33:18.027 に答える
0

これは、Javaでオブジェクト参照と引数の受け渡しがどのように機能するかについての厄介な部分の1つです。メソッドの設定timeToString = "00:00";emptyInputValidation、そのメソッドの外部には反映されません。Javaは参照を値で渡しますが、これはやや混乱を招きます。つまり、文字列を変更するために文字列を呼び出すメソッドは、メソッドのスコープ外に反映されますが、割り当ては反映されません。

これを修正する最も簡単な方法は、単にString:を返すようにすることです。

public String emptyInputValidation(EditText time)
{
    if(TextUtils.isEmpty(time.getText()) {
        return "00:00";
    }
    return time.getText();
}
于 2013-01-11T03:33:49.743 に答える