测试字段是否为null并阻止用户保存到sqlite - android

时间:2012-12-06 03:07:20

标签: android sqlite

如何测试用户是否填写了该字段?我想显示一个提示,他们必须完全填满字段。但即使名称为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

3 个答案:

答案 0 :(得分:2)

尝试检查以下条件

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

}

而不是

if(name != null && number != null)
        {
// do the work
}

答案 1 :(得分:1)

你用null测试了你的字符串。当文本框为空时,字符串名称不为空,它是一个空字符串。所以比较如下

if(!name.trim().equals("") && !number.trim().equals("")){
 }

答案 2 :(得分:1)

虽然我同意上面的答案,但我最近发现这个库可以创建一些能够更有力地测试用户输入的内容。

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

  

Android的Form Validator Library基于编码的Zend_Validator   PHP。该库旨在简化和简化代码   验证Android表单。目前,表格可以处理   EditText上。其他元素将在未来的版本中出现。

如前所述,您可以检查长度或查看字符串是否为空白。对于Java,已经有一个关于此的全面的SO问题,因此它在Android中与您相关。非常值得一看 Java, check whether a string is not null and not empty?