0

私のコード:

if(!"".equals(et1.getText().toString())){
   Toast.makeText(getActivity(), "Please enter text1", Toast.LENGTH_SHORT).show();
} else if(!"".equals(et2.getText().toString())){
   Toast.makeText(getActivity(), "Please enter text2", Toast.LENGTH_SHORT).show();
} else if(!"".equals(et3.getText().toString())){
   Toast.makeText(getActivity(), "Please enter text3", Toast.LENGTH_SHORT).show();
} else if(!"".equals(et4.getText().toString())){
   Toast.makeText(getActivity(), "Please enter text4", Toast.LENGTH_SHORT).show();
} else if(!"".equals(et5.getText().toString())){
   Toast.makeText(getActivity(), "Please enter text5", Toast.LENGTH_SHORT).show();
} 

//全部で 13 フィールドなので、これは 13 に近いチェックになります。だから私が知りたいのは、1つのステートメントでチェックして、どのフィールドが空のままであるかを見つける可能性があるかどうかです。

ありがとうございました。

4

5 に答える 5

5

オブジェクト (et1、2、3、...) を配列に格納し、それを反復処理します。

于 2013-10-24T06:12:09.163 に答える
1

フィールドに を追加できtextwatcherます。以下のスニペットを参照してください。

private class GenericTextWatcher implements TextWatcher {

    private GenericTextWatcher() {

    }

    public void afterTextChanged(Editable editable) {

       if(editable.toString().equals(""))
       {
           Toast.makeText(UrActivity.this, "ur toast", Toast.LENGTH_LONG).show();
       }
    }

    public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    }

    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    }
}

登録しtextlistenerます。

editext.addTextChangedListener(new GenericTextWatcher());

実際のキーを押して検証する方が、後でチェックを実行するよりも高速です。

于 2013-10-24T06:20:45.420 に答える
1

に保管してくださいList

for (EditText et : etList) {
    if(!"".equals(et.getText().toString()))
}
于 2013-10-24T06:21:06.313 に答える
0

必要なコントロールを表すビュー クラスを ( Model-View-Controller表記で) 実装し、ポリモーフィズムを使用してこれらの if ステートメントを回避します。

アップデート:

私が理解しているように、入力検証メカニズムが示されています。私は次のことをします。

私の説明は、あなたの特定のタスクに対して予想されるよりも一般的である可能性があります. でも、将来役に立つと思います。また、私は Android API にあまり精通していないので、フィールドを表すクラスなど、いくつかの Android API クラスへの参照を追加する必要があるかもしれません。

だから、最初のステップ。フィールド プロトタイプを宣言します。

abstract FieldPrototype extends AndroidFieldClass {

    /**
    * Checks field contents and returns true if field is ok, otherwise shows popup validation message and returns false.
    * @return see method description.
    */
    public abstract boolean checkField();

}


class Et1Field extends FieldPrototype {

    private String value;

    public Et1Field() {
        super();
        // your initialization code here
    }

    public boolean checkField() {
        if (value == null || "".equals(value)) {
            // show validation message specific for Et1Field class instance.
            return false;
        }

        return true;
    }
}

// do the same steps for Et2Field .. Et13Field if those fields are different, 
// and implement specific validation functionality for every kind of a field.

画面クラスでは、この画面に表示されるすべてのフィールドの配列を保持します。画面の保存イベントで、saveすべてのフィールド インスタンスにイベントを送信します。すべてのフィールドは、独自の checkField() メソッドを呼び出し、特定のフィールドの実装を外部に表示することなく、独自の内容を検証します。また、フィールドの検証が失敗した場合は、停止してユーザーにフィールドの内容を修正してもらいます。

于 2013-10-24T06:12:07.230 に答える
0

空白をチェックする関数を1つ作成し、このように1回呼び出しました...

    checkBlank(et1.getText().toString()), 1);
checkBlank(et2.getText().toString()), 2);
checkBlank(et3.getText().toString()), 3);..and so on

ここに機能があります..

private void checkBlank(String edt,int pos) {
    // TODO Auto-generated method stub
    if(edt.equals(""))
    {
        Toast.makeText(getApplicationContext(), "Please enter text"+pos, Toast.LENGTH_SHORT).show();
    }

}

幸運を祈ります:)

于 2013-10-24T06:24:50.240 に答える