Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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 如何为输入验证设置onClick?_Java_Android - Fatal编程技术网

Java 如何为输入验证设置onClick?

Java 如何为输入验证设置onClick?,java,android,Java,Android,我面临的问题是用户输入没有通过验证。当我点击regSignUp2Btn按钮时,它将直接跳转到下一个屏幕。当用户未提供验证信息时,它假定在TextInputLayout下提供错误消息。我的代码有错误吗? 下面是我的代码。 爪哇: XML: 在您的代码中,您正在使用OnClickListener regSignUp2Btn.setOnClickListener{ /* ....*/ Intent intent = new Intent(signUpScreen.this

我面临的问题是用户输入没有通过验证。当我点击regSignUp2Btn按钮时,它将直接跳转到下一个屏幕。当用户未提供验证信息时,它假定在TextInputLayout下提供错误消息。我的代码有错误吗? 下面是我的代码。 爪哇:

XML:


在您的代码中,您正在使用
OnClickListener

regSignUp2Btn.setOnClickListener{ 
       /* ....*/
       Intent intent = new Intent(signUpScreen.this, signUpScreen2.class);
       //...
       startActivity(intent);
}
此侦听器不提供验证,并覆盖布局中使用的
android:onClick=“call2ndSignUpScreen”

改为:

regSignUp2Btn.setOnClickListener{ 

      if (!validateEmail() | !validateName() | !validatePassword() | !validateConfirmPassword()) {
            //setError
            return;
      }
      //....your code
 }

请注意,在android中,按钮只能有一个onClick侦听器

在XML布局中,您在regSignUp2Btn(也称为goToSignUp2Btn)上设置onClick处理程序

但稍后,在signUpScreen.onCreate()中,您尝试分配第二个。但是,这会将分配给XML布局的onClick处理程序替换为在未经验证的情况下启动活动的处理程序:

    regSignUp2Btn.setOnClickListener(v -> {
        //Get all the values
        ...
        startActivity(intent);
    }); 
您必须在一个OnClickListener中组合验证和活动的开始。 从XML布局中删除“android:onClick=“call2ndSignUpScreen”。 从活动中删除方法call2ndSignUpScreen(View视图)。然后,在活动的onCreate()方法中,将regSignUp2Btn的OnClickListener的实现更改为以下内容:

    regSignUp2Btn.setOnClickListener(v -> {
        if (!validateEmail() | !validateName() | !validatePassword() | !validateConfirmPassword()) 
             return;
        
        //Get all the values
        String name = regName.getEditText().getText().toString().trim();
        String email = regEmail.getEditText().getText().toString().trim();
        String password = regPassword.getEditText().getText().toString();

        Intent intent = new Intent(signUpScreen.this, signUpScreen2.class);
        intent.putExtra("name", name);
        intent.putExtra("email", email);
        intent.putExtra("password", password);
        startActivity(intent);

    });

这个问题似乎根本不涉及android studio,而是问android本身。如果你问的是IDE的一个功能,你可以使用
android studio
标签,否则只使用
android
就可以了
    android:onClick="call2ndSignUpScreen"
    regSignUp2Btn.setOnClickListener(v -> {
        //Get all the values
        ...
        startActivity(intent);
    }); 
    regSignUp2Btn.setOnClickListener(v -> {
        if (!validateEmail() | !validateName() | !validatePassword() | !validateConfirmPassword()) 
             return;
        
        //Get all the values
        String name = regName.getEditText().getText().toString().trim();
        String email = regEmail.getEditText().getText().toString().trim();
        String password = regPassword.getEditText().getText().toString();

        Intent intent = new Intent(signUpScreen.this, signUpScreen2.class);
        intent.putExtra("name", name);
        intent.putExtra("email", email);
        intent.putExtra("password", password);
        startActivity(intent);

    });