Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查EditText空条目并验证它_Java_Android_Eclipse_If Statement_Try Catch - Fatal编程技术网

Java 检查EditText空条目并验证它

Java 检查EditText空条目并验证它,java,android,eclipse,if-statement,try-catch,Java,Android,Eclipse,If Statement,Try Catch,我正在尝试制作一个Android应用程序的注册表。我使用MySQLite制作了一个数据库适配器等 我一直面临的问题是验证输入到EditText控件中的条目。 当我单击Register按钮时,信息应该存储在数据库中,确保条目不是空的,确认密码与密码匹配,最重要的是用户名尚未使用。我已经尝试了每一种方法,但是要么我得到了运行时强制关闭错误,要么验证没有按照我想要的方式工作 final EditText unedit = (EditText) findViewById(R.id.unedit)

我正在尝试制作一个Android应用程序的注册表。我使用MySQLite制作了一个数据库适配器等

我一直面临的问题是验证输入到EditText控件中的条目。 当我单击Register按钮时,信息应该存储在数据库中,确保条目不是空的,确认密码与密码匹配,最重要的是用户名尚未使用。我已经尝试了每一种方法,但是要么我得到了运行时强制关闭错误,要么验证没有按照我想要的方式工作

    final EditText unedit = (EditText) findViewById(R.id.unedit);
    final EditText passedit = (EditText) findViewById(R.id.passedit);
    final EditText conpassedit = (EditText) findViewById(R.id.conpassedit);
    final EditText nameedit = (EditText) findViewById(R.id.nameedit);
    final EditText emailedit = (EditText) findViewById(R.id.emailedit);
    final EditText mobedit = (EditText) findViewById(R.id.mobedit);

    Button register = (Button) findViewById(R.id.registerbutton);

    register.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            String username = unedit.getText().toString();
            String password = passedit.getText().toString();
            String conpassword = conpassedit.getText().toString();
            String name = nameedit.getText().toString();
            String email = emailedit.getText().toString();
            String mobileno = mobedit.getText().toString();

            RegDb reg = new RegDb(Register.this);
            reg.open();
            String returnedUn = reg.getUn(username);
            reg.close();

            if (username.isEmpty()) {
                unedit.setError("Username is required");
                // return;
            }
            if (password.isEmpty()) {
                passedit.setError("Password is required");
                // return;
            }
            if (conpassword.isEmpty()) {
                conpassedit.setError("Password confirmation is required");
                // return;
            }
            if (name.isEmpty()) {
                nameedit.setError("Name is required");
                // return;
            }
            if (email.isEmpty()) {
                emailedit.setError("Email is required");
                // return;
            }
            if (mobileno.isEmpty()) {
                mobedit.setError("Mobile No is required");
                // return;
            }
            if (username.equals(returnedUn)) {
                unedit.setError("Username is already used");
                // return;
            }
            if (!conpassword.equals(password)) {
                passedit.setError("Check your password");
                // return;
            }
            if (!username.isEmpty() && !password.isEmpty()
                    && !name.isEmpty() && !email.isEmpty()
                    && !mobileno.isEmpty() && conpassword.equals(password)
                    && !username.equals(returnedUn)) {
                Dialog d = new Dialog(v.getContext());
                d.setTitle("Account created.");
                d.show();
            } else {
                return;
            }
我最后也使用了try-catch,但是验证似乎也无法工作

 boolean created = true;

                try {

                    if (!username.isEmpty() && !password.isEmpty()
                    && !name.isEmpty() && !email.isEmpty()
                    && !mobileno.isEmpty() && conpassword.equals(password)
                    && !username.equals(returnedUn)){
                    RegDb entry = new RegDb(Register.this);
                    entry.open();
                    entry.createEntry(username, password, name, email,
                            mobileno);

                    entry.close();
                }

            } catch (Exception e) {
                created=false;
                Dialog d = new Dialog(v.getContext());
                d.setTitle("Please check your entries.");
                d.show();

            } finally {
                if (created) {
                    Dialog d = new Dialog(v.getContext());
                    d.setTitle("Account created.");

                    Intent i = new Intent(v.getContext(),
                            MainActivity.class);
                    startActivity(i);

                }
            }

请告诉我我做错了什么以及应该做什么。

首先,您不需要以这种方式声明
final EditText unedit=(EditText)findViewById(R.id.unedit)

您可以在类级别将它们声明为

private EditText unedit;
现在,在onCreate()方法上,使用以下方法访问它

unedit = (EditText) findViewById(R.id.unedit);
并检查字符串变量,如下所示:

String username = unedit.getText().toString().trim();  // Add Trim() method

if (username.equals("")) {
                unedit.setError("Username is required");
                // return;
            }

其他的也一样。

谢谢!我会考虑的。但是,如果我想继续将值存储到数据库中,如何验证所有字符串都不是空的,数据库中不存在用户名,并且确认密码等于密码?只需在存储到数据库之前检查字符串。