Задать вопрос
@TweeM4N

Как вызвать private метод в Fragmente Android Studio?

Не получается вызвать private void userLogin() в case 2. Приложение при нажатии кнопки Login закрывается.

@Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.register:
                Intent reg = new Intent(getActivity(), Register.class);
                startActivity(reg);
                break;

            case R.id.signIn:
                userLogin();
                break;

            case R.id.forgotPassword:
                Intent fP = new Intent(getActivity(), ForgotPassword.class);
                startActivity(fP);
                break;
        }
    }


Весь код:
public class ProfileFragment extends Fragment implements View.OnClickListener {

    private TextView register, forgotPassword;
    private EditText editTextEmail, editTextPassword;
    private Button signIn;

    private FirebaseAuth mAuth;
    private ProgressBar progressBar;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        mAuth = FirebaseAuth.getInstance();

        View v = inflater.inflate(R.layout.fragment_profile, container, false);

        TextView register = (TextView) v.findViewById(R.id.register);
        register.setOnClickListener(this);

        Button signIn = (Button) v.findViewById(R.id.signIn);
        signIn.setOnClickListener(this);

        EditText editTextEmail = (EditText) v.findViewById(R.id.email);
        EditText editTextPassword = (EditText) v.findViewById(R.id.password);

        ProgressBar progressBar = (ProgressBar) v.findViewById(R.id.progressBar);

        TextView forgotPassword = (TextView) v.findViewById(R.id.forgotPassword);
        forgotPassword.setOnClickListener(this);
        return v;
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.register:
                Intent reg = new Intent(getActivity(), Register.class);
                startActivity(reg);
                break;

            case R.id.signIn:
                userLogin();
                break;

            case R.id.forgotPassword:
                Intent fP = new Intent(getActivity(), ForgotPassword.class);
                startActivity(fP);
                break;
        }
    }

    private void userLogin() {
        String email = editTextEmail.getText().toString().trim();
        String password = editTextPassword.getText().toString().trim();

        if(email.isEmpty()){
            editTextEmail.setError("Email обязателен!");
            editTextEmail.requestFocus();
            return;
        }

        if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
            editTextEmail.setError("Пожалуйста, введите корректный email!");
            editTextEmail.requestFocus();
            return;
        }

        if(password.isEmpty()){
            editTextPassword.setError("Пароль обязателен!");
            editTextPassword.requestFocus();
            return;
        }

        if(password.length() < 6){
            editTextPassword.setError("Пароль должен состоять минимум из 6 символов!");
            editTextPassword.requestFocus();
            return;
        }

        progressBar.setVisibility(View.VISIBLE);
  • Вопрос задан
  • 168 просмотров
Подписаться 1 Простой 3 комментария
Ответ пользователя Орхан Гасанлы К ответам на вопрос (3)
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Проблема не в том, что вы не вызываете метод, так как он тут явно вызывается:
case R.id.signIn:
                userLogin();
                break;

Проблема в том, что после вызова метода у вас приложение крашится.
Приложение при нажатии кнопки Login закрывается.

Попробуйте провести дебаг приложения и загляните в логи
Ответ написан
Комментировать