Android проблемы с макетом ввода текста - PullRequest
1 голос
/ 30 января 2020

У меня сейчас проблема с макетом ввода текста, я сделал сообщение об ошибке, которое показывает, что что-то не так с помощью setError, но проблема в том, что сообщение об ошибке продолжает отображаться даже после ввода действительной информации в тексте редактирования я не знаю, как отменить сообщение об ошибке, если введен действительный адрес электронной почты

вторая проблема - когда я ввожу только пароль и нажимаю кнопку регистрации, приложение вылетает

вот код

package com.example.registerloginapp;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.os.Bundle;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.android.material.textfield.TextInputLayout;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;

public class Register extends AppCompatActivity {
    private TextInputLayout memail, mpassword;
    Button reg;
    FirebaseAuth fAuth;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);

        memail = (TextInputLayout) findViewById(R.id.text_input_email);
        mpassword = (TextInputLayout) findViewById(R.id.text_input_password);
        reg = findViewById(R.id.reg_button);
        TextView textView = findViewById(R.id.register);
        String text = "Already have an account? Log in";
        SpannableString ss = new SpannableString(text);
        ClickableSpan clickableSpan1 = new ClickableSpan() {
            @Override
            public void onClick(@NonNull View widget) {
                startActivity(new Intent(getApplicationContext(), Login.class));
            }
        };
        ss.setSpan(clickableSpan1, 25, 31, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        textView.setText(ss);
        textView.setMovementMethod(LinkMovementMethod.getInstance());
        fAuth = FirebaseAuth.getInstance();

        if (fAuth.getCurrentUser() != null) {
            startActivity(new Intent(getApplicationContext(), MainActivity.class));
            finish();
        }
        reg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String email = memail.getEditText().getText().toString().trim();
                String password = mpassword.getEditText().getText().toString().trim();
                if (TextUtils.isEmpty(email)) {
                    memail.setError("Email is required");
                }
                if (TextUtils.isEmpty(password)) {
                    mpassword.setError("Password is required");
                    return;
                }
                fAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()) {
                            startActivity(new Intent(getApplicationContext(), MainActivity.class));
                        } else {
                            Toast.makeText(Register.this, "" + task.getException().getMessage(), Toast.LENGTH_LONG).show();
                        }

                    }
                });
            }
        });
    }
}

1 Ответ

1 голос
/ 30 января 2020

Пожалуйста, добавьте EditText Изменить слушателя как:

memail.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        @Override
        public void afterTextChanged(Editable s) {
                if (s.toString().length() > 0) {
                    memail.setError(null);
                } else {
                    memail.setError("Email is required");
                }
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...