Java tutorial
package com.victorkifer.AndroidTemplates.fragments; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Patterns; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.victorkifer.AndroidTemplates.R; import com.victorkifer.AndroidTemplates.entities.User; import com.victorkifer.AndroidTemplates.workers.SignInWorker; import java.util.regex.Pattern; /** * Author: Victor Kifer (droiddevua[at]gmail[dot]com) * License: MIT (see LICENSE file) * Year: 2014 */ public class SignInFragment extends Fragment implements SignInWorker.OnSignInFinished { public static final int DEFAULT_MIN_PASSWORD_LENGTH = 6; private int minPasswordLength = DEFAULT_MIN_PASSWORD_LENGTH; EditText etEmail; EditText etPassword; Button btnSignIn; View signInForm; View signInProgress; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.sign_in, container, false); signInProgress = v.findViewById(R.id.sign_in_progress); signInForm = v.findViewById(R.id.sign_in_form); etEmail = (EditText) v.findViewById(R.id.etEmail); etPassword = (EditText) v.findViewById(R.id.etPassword); btnSignIn = (Button) v.findViewById(R.id.btnSignIn); btnSignIn.setOnClickListener(signInListener); return super.onCreateView(inflater, container, savedInstanceState); } private int checkInput() { int result = Activity.RESULT_OK; if (etEmail.getText() == null || etEmail.getText().length() == 0) { etEmail.setError(getString(R.string.err_email_empty)); result = Activity.RESULT_CANCELED; } else { Pattern emailPattern = Patterns.EMAIL_ADDRESS; if (!emailPattern.matcher(etEmail.getText()).matches()) { etEmail.setError(getString(R.string.err_not_an_email)); result = Activity.RESULT_CANCELED; } } if (etPassword.getText() == null || etPassword.getText().length() == 0) { etPassword.setError(getString(R.string.err_password_empty)); result = Activity.RESULT_CANCELED; } else if (etPassword.getText().length() < minPasswordLength) { etPassword.setError(getString(R.string.err_password_too_short)); result = Activity.RESULT_CANCELED; } return result; } private void hideSoftKeyboard() { InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(etPassword.getWindowToken(), 0); } private void signIn(String email, String password) { hideSoftKeyboard(); signInForm.setVisibility(View.GONE); signInProgress.setVisibility(View.VISIBLE); // do sign in } private View.OnClickListener signInListener = new View.OnClickListener() { @Override public void onClick(View view) { int result = checkInput(); if (result == Activity.RESULT_OK) { signIn(etEmail.getText().toString(), etPassword.getText().toString()); } } }; @Override public void onSignInSuccessful(User user) { // inform activity to change fragment } @Override public void onSignInFailed(String error) { signInForm.setVisibility(View.VISIBLE); signInProgress.setVisibility(View.GONE); Toast.makeText(getActivity(), getString(R.string.err_invalid_email_password), Toast.LENGTH_LONG).show(); } }