1

フィールドがユーザーによって入力されていないかどうかをテストするにはどうすればよいですか? フィールドを完全に埋める必要があるというプロンプトを表示したいと思います。ただし、このコードは、名前が null で番号が入力されている場合でも受け入れられます。

public void onClick(View arg0)
{
    switch(arg0.getId())
    {
    case R.id.bSQLUpdate:
        boolean diditwork = true;
        try
        {
        String name = sqlName.getText().toString();
        String number = sqlNumber.getText().toString();

        GroupDb entry = new GroupDb(ContactDb.this);
        entry.open();
        if(name != null && number != null)
        {
            if((!entry.hasDuplicateNameNumber(name, number)) )
            {
                entry.createEntry(name, number);

            }
            else
            {
                diditwork = false;
                Dialog d = new Dialog(this);
                d.setTitle("Error");
                TextView tv = new TextView(this);
                tv.setText("Duplicate name or number. Please try again.");
                d.setContentView(tv);
                d.show();
                sqlName.setText("");
                sqlNumber.setText("");
            }
        }
        else
        {
            diditwork = false;
            Dialog d = new Dialog(this);
            d.setTitle("Error");
            TextView tv = new TextView(this);
            tv.setText("Please fill up all fields. Please try again.");
            d.setContentView(tv);
            d.show();
            sqlName.setText("");
            sqlNumber.setText("");
        }

        entry.close();
        }
        catch(Exception e)
        {
            diditwork = false;
            String error = e.toString();
            Dialog d = new Dialog(this);
            d.setTitle("Update failed");
            TextView tv = new TextView(this);
            tv.setText(error);
            d.setContentView(tv);
            d.show();
            sqlName.setText("");
            sqlNumber.setText("");
        }
        finally
        {
            if(diditwork)
            {
                Dialog d = new Dialog(this);
                d.setTitle("Contact list updated");
                TextView tv = new TextView(this);
                tv.setText("Success");
                d.setContentView(tv);
                d.show();
                sqlName.setText("");
                sqlNumber.setText("");
            }
        }
        break;

    case R.id.bSQLOpenView:
        Intent intent = new Intent();
        intent.setClass(ContactDb.this, CustomListView.class);

        startActivityForResult(intent, 0);
        break;

    }

}// end onclick
4

3 に答える 3

2

次の条件を確認してみてください

if((name.length() > 0) && (number .length() > 0))
        {
// do the work

}

それ以外の

if(name != null && number != null)
        {
// do the work
}
于 2012-12-06T03:10:19.213 に答える
1

上記の回答に同意しますが、最近、このライブラリがユーザー入力をもう少し堅牢にテストするための何かを作成することを発見しました。

https://github.com/throrin19/Android-Validator

Android用のフォームバリデーターライブラリは、PHPでコード化されたZend_Validatorに基づいています。このライブラリは、フォームAndroidを検証するためのコードを簡素化および合理化することを目的としています。今のところ、フォームはEditTextを処理できます。他の要素は、将来のバージョンで登場する予定です。

以前の回答が示唆しているように、長さを確認するか、文字列が空白かどうかを確認できます。これについては、Javaに関する包括的なSOの前の質問がすでにあるので、ここAndroidであなたに関係があります。Javaを一見の価値があります 。文字列がnullでも空でもないかどうかを確認してください。

于 2012-12-06T03:20:23.917 に答える
1

文字列をnullでテストしました。テキストボックスが空の場合、文字列名はnullではなく、空の文字列です。以下のように比較してください

if(!name.trim().equals("") && !number.trim().equals("")){
 }
于 2012-12-06T03:09:56.190 に答える