How to Create a Simple Login and Registration App in Android Studio That Displays Username Using Firebase

rake code
8 min readSep 25, 2019

--

Firebase was created by google to simplify processes that involved databases. Instead of writing SQL codes, developers could use firebase to simplify their processes. Firebase can be used for authentication and data storage. In this tutorial we will focus on authentication that involves user email and password. Though other forms exist, like google, facebook and twitter login amongst others. We will stick with the email and password for now. You can check my timeline for the other tutorials. For complete beginners don’t worry I have uploaded the source code on github and have riddled my code with comments to help you better understand. Before commencing this tutorial make sure you have hooked up your project to firebase.

First we will create a welcome page in xml. The page will consist of two buttons. A login and signup button. I used a constraint layout as the default layout. The code is below with comments. The comments are marked by a “//” in front. You might notice that the buttons have a background. We will be creating a background button for the signup and login. For the login button we will create an xml file under the drawable folder and name it get.

<?xml version=”1.0" encoding=”utf-8"?>
<shape xmlns:android=”http://schemas.android.com/apk/res/android"
android:shape=”rectangle”> // defines the shape of the background

<solid android:color=”@color/signIn”/> // this color is defined in the color.xml
<corners android:radius=”5dp”/> // defines the corner radius

</shape>

For the signup button we follow the steps we used to create the get.xml file and input the following code. we will call the xml file transaprent

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"

android:shape="rectangle">

<stroke android:color="@color/signIn"

android:width="2dp"/>

<solid android:color="@android:color/transparent"/>

<corners

android:radius="5dp"/>



// follow the comments in get.xml for better understanding

</shape>

In our activity.main input the following code.

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/background" // specifies the background of the activity. You can use a normal color like @android:color/white

tools:context=".MainActivity">



<Button

android:id="@+id/btnlogin"

android:layout_width="0dp"

android:layout_height="38dp"

android:layout_marginStart="16dp"

android:layout_marginTop="8dp"

android:layout_marginEnd="16dp"

android:layout_marginBottom="8dp"

android:background="@drawable/get"

android:text="@string/login_name"// specifies the background of the button

android:textColor="@android:color/background_light"

android:textSize="15sp"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.0"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toTopOf="parent"

app:layout_constraintVertical_bias="0.914"

tools:text="@string/login_name" />



<Button

android:id="@+id/btnsignup"

android:layout_width="0dp"

android:layout_height="38dp"

android:layout_marginStart="16dp"

android:layout_marginTop="16dp"

android:layout_marginEnd="16dp"

android:layout_marginBottom="16dp"

android:background="@drawable/transparent" //specifies button background

android:text="@string/signup_name"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.0"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toBottomOf="@+id/btnlogin"

app:layout_constraintVertical_bias="0.333"

tools:text="@string/signup_name" />



<TextView

android:id="@+id/textView4"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginStart="8dp"

android:layout_marginTop="8dp"

android:layout_marginEnd="8dp"

android:fontFamily="@font/noto_sans_bold"

android:text="@string/welcome"

android:textColor="@color/signIn"

android:textSize="42sp"

app:layout_constraintBottom_toTopOf="@+id/btnlogin"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toTopOf="parent"

app:layout_constraintVertical_bias="0.287" />



<ImageView

android:id="@+id/imageView"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginStart="8dp"

android:layout_marginEnd="8dp"

android:layout_marginBottom="8dp"

app:layout_constraintBottom_toTopOf="@+id/btnlogin"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.495"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toBottomOf="@+id/textView4"

app:srcCompat="@drawable/logo" />



<TextView

android:id="@+id/textView5"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginStart="8dp"

android:layout_marginTop="8dp"

android:layout_marginEnd="8dp"

android:layout_marginBottom="8dp"

android:fontFamily="@font/noto_sans_bold"

android:text="@string/to"

android:textColor="@color/transTo"

android:textSize="15sp"

app:layout_constraintBottom_toTopOf="@+id/imageView"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toBottomOf="@+id/textView4"

app:layout_constraintVertical_bias="0.00999999" />

</android.support.constraint.ConstraintLayout>

In the MainActivity. Java we type in the following

package com.example.logintask;



import android.content.Intent;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;



public class MainActivity extends AppCompatActivity {



@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Button btnSignup = (Button) findViewById(R.id.btnsignup);

Button btnLogin = (Button) findViewById(R.id.btnlogin);





btnLogin.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent login = new Intent(MainActivity.this, login.class);

startActivity(login); // takes the user to the login activity

}

});







btnSignup.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent signup = new Intent(MainActivity.this, signup.class);

startActivity(signup);

}

});

}



}

we will create a new activity and call it login. In the login.xml we type in the following

?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/login"

tools:context=".login">



<EditText

android:id="@+id/etemail"

android:layout_width="0dp"

android:layout_height="57dp"

android:layout_marginStart="16dp"

android:layout_marginEnd="16dp"

android:layout_marginBottom="8dp"

android:background="@drawable/editfield"

android:ems="10"

android:fontFamily="sans-serif-medium"

android:hint="@string/email_name"

android:inputType="text"

android:textColor="@color/editText"

android:textSize="16sp"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.497"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toTopOf="parent"

app:layout_constraintVertical_bias="0.367" />



<EditText

android:id="@+id/etpassword"

android:layout_width="0dp"

android:layout_height="57dp"

android:layout_marginStart="16dp"

android:layout_marginEnd="16dp"

android:layout_marginBottom="8dp"

android:autofillHints=""

android:background="@drawable/editfield"

android:ems="10"

android:fontFamily="sans-serif-medium"

android:hint="@string/password_name"

android:inputType="textPassword"

android:textColor="@color/editText"

android:textSize="16sp"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.497"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toBottomOf="@+id/etemail"

app:layout_constraintVertical_bias="0.044" />



<Button

android:id="@+id/btnlogin"

android:layout_width="0dp"

android:layout_height="57dp"

android:layout_marginStart="16dp"

android:layout_marginEnd="16dp"

android:layout_marginBottom="8dp"

android:background="@drawable/loginbtn"

android:text="@string/login_name"

android:textColor="@android:color/white"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.498"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toBottomOf="@+id/etpassword"

app:layout_constraintVertical_bias="0.125" />



<Button

android:id="@+id/btnsignup"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_marginStart="16dp"

android:layout_marginEnd="16dp"

android:layout_marginBottom="8dp"

android:background="@drawable/transparent"

android:text="@string/signup_name"

android:textColor="@color/signIn"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.0"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toBottomOf="@+id/textView"

app:layout_constraintVertical_bias="0.407" />



<ProgressBar

android:id="@+id/progressLog"

style="?android:attr/progressBarStyle"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginStart="8dp"

android:layout_marginTop="8dp"

android:layout_marginEnd="8dp"

android:layout_marginBottom="8dp"

android:visibility="gone"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toTopOf="parent" />



<TextView

android:id="@+id/textView6"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginStart="8dp"

android:layout_marginEnd="8dp"

android:layout_marginBottom="8dp"

android:fontFamily="@font/noto_sans_bold"

android:text="@string/login_name"

android:textAppearance="@style/TextAppearance.AppCompat.Medium"

android:textColor="@color/signIn"

android:textSize="32sp"

app:layout_constraintBottom_toTopOf="@+id/etemail"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.0"

app:layout_constraintStart_toStartOf="@+id/etemail"

app:layout_constraintTop_toTopOf="parent"

app:layout_constraintVertical_bias="0.582" />



<TextView

android:id="@+id/textView7"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_marginStart="8dp"

android:layout_marginTop="8dp"

android:layout_marginEnd="32dp"

android:layout_marginBottom="8dp"

android:fontFamily="sans-serif-medium"

android:text="@string/login_info"

android:textAlignment="textStart"

android:textColor="@color/signIn"

android:textSize="13sp"

app:layout_constraintBottom_toTopOf="@+id/etemail"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.212"

app:layout_constraintStart_toStartOf="@+id/etemail"

app:layout_constraintTop_toBottomOf="@+id/textView6"

app:layout_constraintVertical_bias="0.324" />



<TextView

android:id="@+id/textView"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginStart="8dp"

android:layout_marginEnd="8dp"

android:layout_marginBottom="2dp"

android:fontFamily="sans-serif-medium"

android:text="@string/dont_name"

android:textColor="@color/signIn"

android:textSize="15sp"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.497"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toBottomOf="@+id/btnlogin"

app:layout_constraintVertical_bias="0.6" />





</android.support.constraint.ConstraintLayout>

In the login.java we will type in the following.

package com.example.logintask;



import android.content.Intent;

import android.support.annotation.NonNull;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ProgressBar;

import android.widget.Toast;



import com.google.android.gms.tasks.OnCompleteListener;

import com.google.android.gms.tasks.Task;

import com.google.firebase.auth.AuthResult;

import com.google.firebase.auth.FirebaseAuth;

import com.google.firebase.auth.FirebaseUser;



public class login extends AppCompatActivity {



FirebaseAuth firebaseAuth;

EditText etmail;

EditText etPassword;

Button btnLogin;

Button btnRegister;

private FirebaseAuth.AuthStateListener authStateListener;

ProgressBar progressBar;







@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_login);



firebaseAuth = FirebaseAuth.getInstance();

etmail = (EditText) findViewById(R.id.etemail);

etPassword = (EditText) findViewById(R.id.etpassword);

btnLogin = (Button) findViewById(R.id.btnlogin);

btnRegister = (Button) findViewById(R.id.btnsignup);

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

// checks whether the user is logged in and executes the code

authStateListener = new FirebaseAuth.AuthStateListener() {

@Override

public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {

FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();

if (firebaseUser != null){

Toast.makeText(login.this, "Login Successful", Toast.LENGTH_SHORT).show();

Intent home = new Intent(login.this, dashboard.class);

startActivity(home);

}

else{

Toast.makeText(login.this, "Please Login", Toast.LENGTH_SHORT).show();

}

}

};



btnLogin.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v){



String email = etmail.getText().toString(); // gets the user email

String password = etPassword.getText().toString();



if (email.isEmpty()){

etmail.setError("PLEASE ENTER EMAIL ADDRESS");

etmail.requestFocus();

}

else if (password.isEmpty()){

etPassword.setError("PLEASE INPUT PASSWORD");

etPassword.requestFocus();

}

else if (email.isEmpty() && password.isEmpty()){

Toast.makeText(login.this, " BOTH FIELDS ARE EMPTY!!", Toast.LENGTH_SHORT).show();

}

else if (!(email.isEmpty() && !password.isEmpty())){

progressBar.setVisibility(View.VISIBLE);

firebaseAuth.signInWithEmailAndPassword(email,password).addOnCompleteListener(login.this,

new OnCompleteListener<AuthResult>() {

@Override

public void onComplete(@NonNull Task<AuthResult> task) {

progressBar.setVisibility(View.GONE);

if (!task.isSuccessful()){

Toast.makeText(login.this, task.getException().getMessage(), Toast.LENGTH_SHORT).show();

}

else{

Intent dashboard = new Intent(login.this, dashboard.class);

startActivity(dashboard);

}

}

});



}

else {

Toast.makeText(login.this, "Error Occured",Toast.LENGTH_SHORT).show();

}







}

});



btnRegister.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Intent signup = new Intent(login.this, signup.class);

startActivity(signup);

}

});





}

@Override

protected void onStart() {

super.onStart(); // attach the firebase listener when the activity starts

firebaseAuth.addAuthStateListener(authStateListener);

}



@Override

protected void onStop() {

super.onStop(); // remove the firebase listener when the activity stops

if (authStateListener != null) {

firebaseAuth.removeAuthStateListener(authStateListener);



}

}

}

Create a new activity and call it signup. In the signup .xml . input the following code.

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="@drawable/login"

tools:context=".signup">



<EditText

android:id="@+id/editTextemail"

android:layout_width="0dp"

android:layout_height="40dp"

android:layout_marginStart="16dp"

android:layout_marginTop="8dp"

android:layout_marginEnd="16dp"

android:layout_marginBottom="8dp"

android:background="@drawable/editfield"

android:ems="10"

android:hint="@string/email_name"

android:inputType="textEmailAddress"

android:textColor="@color/editText"

android:textSize="15sp"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.0"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toBottomOf="@+id/textName"

app:layout_constraintVertical_bias="0.0" />



<EditText

android:id="@+id/editTextpassword"

android:layout_width="0dp"

android:layout_height="40dp"

android:layout_marginStart="16dp"

android:layout_marginTop="8dp"

android:layout_marginEnd="16dp"

android:layout_marginBottom="8dp"

android:background="@drawable/editfield"

android:ems="10"

android:hint="@string/password_name"

android:inputType="textPassword"

android:textColor="@color/editText"

android:textSize="15sp"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.0"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toBottomOf="@+id/editTextemail"

app:layout_constraintVertical_bias="0.0" />



<Button

android:id="@+id/btnsignup"

android:layout_width="0dp"

android:layout_height="40dp"

android:layout_marginStart="16dp"

android:layout_marginTop="16dp"

android:layout_marginEnd="16dp"

android:layout_marginBottom="8dp"

android:background="@drawable/loginbtn"

android:text="@string/signup_name"

android:textColor="@android:color/white"

android:textSize="14sp"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.0"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toBottomOf="@+id/editTextpassword"

app:layout_constraintVertical_bias="0.0" />



<TextView

android:id="@+id/textView2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginStart="8dp"

android:layout_marginEnd="8dp"

android:layout_marginBottom="8dp"

android:text="@string/already_name"

android:textColor="@color/signIn"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.497"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toBottomOf="@+id/btnsignup"

app:layout_constraintVertical_bias="0.651" />



<Button

android:id="@+id/btnlogin"

android:layout_width="0dp"

android:layout_height="40dp"

android:layout_marginStart="16dp"

android:layout_marginEnd="16dp"

android:layout_marginBottom="8dp"

android:background="@drawable/transparent"

android:text="@string/login_name"

android:textColor="@color/signIn"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toBottomOf="@+id/textView2" />



<ProgressBar

android:id="@+id/progressLog"

style="?android:attr/progressBarStyle"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginStart="8dp"

android:layout_marginTop="8dp"

android:layout_marginEnd="8dp"

android:layout_marginBottom="8dp"

android:visibility="gone"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintEnd_toEndOf="@+id/editTextpassword"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toTopOf="parent" />



<EditText

android:id="@+id/textName"

android:layout_width="0dp"

android:layout_height="40dp"

android:layout_marginStart="16dp"

android:layout_marginTop="8dp"

android:layout_marginEnd="16dp"

android:layout_marginBottom="8dp"

android:background="@drawable/editfield"

android:ems="10"

android:hint="@string/user_name"

android:inputType="textPersonName"

android:textColor="@color/editText"

android:textSize="15sp"

app:layout_constraintBottom_toBottomOf="parent"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.0"

app:layout_constraintStart_toStartOf="parent"

app:layout_constraintTop_toTopOf="parent"

app:layout_constraintVertical_bias="0.367" />



<TextView

android:id="@+id/textView8"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginTop="8dp"

android:layout_marginEnd="8dp"

android:fontFamily="@font/noto_sans_bold"

android:text="@string/signup_name"

android:textColor="@color/signIn"

android:textSize="32sp"

app:layout_constraintBottom_toTopOf="@+id/textName"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.0"

app:layout_constraintStart_toStartOf="@+id/textName"

app:layout_constraintTop_toTopOf="parent" />



<TextView

android:id="@+id/textView9"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_marginStart="8dp"

android:layout_marginTop="8dp"

android:layout_marginEnd="32dp"

android:layout_marginBottom="8dp"

android:fontFamily="sans-serif-medium"

android:text="@string/signup_info"

android:textAlignment="textStart"

android:textColor="@color/signIn"

android:textSize="13sp"

app:layout_constraintBottom_toTopOf="@+id/textName"

app:layout_constraintEnd_toEndOf="parent"

app:layout_constraintHorizontal_bias="0.0"

app:layout_constraintStart_toStartOf="@+id/textName"

app:layout_constraintTop_toBottomOf="@+id/textView8"

app:layout_constraintVertical_bias="0.07999998" />

In the signup.java we input the following code.

package com.example.logintask;



import android.content.Intent;

import android.support.annotation.NonNull;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ProgressBar;

import android.widget.Toast;



import com.example.logintask.model.user;

import com.google.android.gms.tasks.OnCompleteListener;

import com.google.android.gms.tasks.Task;

import com.google.firebase.auth.AuthResult;

import com.google.firebase.auth.FirebaseAuth;

import com.google.firebase.auth.FirebaseUser;

import com.google.firebase.auth.UserProfileChangeRequest;

import com.google.firebase.database.DatabaseReference;

import com.google.firebase.database.FirebaseDatabase;



public class signup extends AppCompatActivity {



FirebaseDatabase database;

DatabaseReference users;

EditText username;

EditText emails;

EditText password;

Button btnRegister;

FirebaseAuth firebaseAuth;

ProgressBar progressBar;

Button loginBtn;



@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_signup);







firebaseAuth = FirebaseAuth.getInstance();



loginBtn = (Button) findViewById(R.id.btnlogin);

username = (EditText)findViewById(R.id.textName);

emails = (EditText) findViewById(R.id.editTextemail);

password = (EditText) findViewById(R.id.editTextpassword);

btnRegister = (Button) findViewById(R.id.btnsignup);

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





loginBtn.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

startActivity(new Intent(signup.this,login.class));

}

});

btnRegister.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

final String email = emails.getText().toString().trim();

String pwd = password.getText().toString().trim();

final String name = username.getText().toString().trim();
// this condition checks to make sure the user inputs the correct details

if(email.isEmpty()){

emails.setError("Please enter email id");

emails.requestFocus();

}

else if(pwd.isEmpty()){

password.setError("Please enter your password");

password.requestFocus();

}

else if(email.isEmpty() && pwd.isEmpty()){

Toast.makeText(signup.this,"Fields Are Empty!",Toast.LENGTH_SHORT).show();

}

else if(!(email.isEmpty() && pwd.isEmpty())){

progressBar.setVisibility(View.VISIBLE);
// this firebase method creates a user with email and password

firebaseAuth.createUserWithEmailAndPassword(email, pwd).addOnCompleteListener(signup.this, new OnCompleteListener<AuthResult>() {

@Override

public void onComplete(@NonNull Task<AuthResult> task) {



if(!task.isSuccessful()){

Toast.makeText(signup.this,task.getException().getMessage(),Toast.LENGTH_SHORT).show();

}

else {

FirebaseUser user = firebaseAuth.getCurrentUser();

UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()

.setDisplayName(name).build(); // saves the username



user.updateProfile(profileUpdates).addOnCompleteListener(new OnCompleteListener<Void>() {

@Override

public void onComplete(@NonNull Task<Void> task) {

if (task.isSuccessful()) {

Toast.makeText(signup.this, "username stored successful", Toast.LENGTH_LONG).show();

}

}

});







startActivity(new Intent(signup.this, login.class));

Toast.makeText(signup.this, "Registration is successful", Toast.LENGTH_SHORT).show();



}

}

});

}

else{

Toast.makeText(signup.this,"Error Occurred!",Toast.LENGTH_SHORT).show();



}

}

});





}

}

This is the moment we create a dashboard that welcomes our user and displays our username and email. We create a dashboard activity and in the dashboard.xml we input the following code.

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/login"
tools:context=".dashboard">

<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:fontFamily="@font/noto_sans_bold"
android:text="@string/welcome"
android:textAppearance="@style/TextAppearance.AppCompat.Large"
android:textColor="@color/signIn"
android:textSize="40sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.38" />

<TextView
android:id="@+id/username_conf"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:fontFamily="sans-serif-medium"
android:text="TextView"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@color/signIn"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView3"
app:layout_constraintVertical_bias="0.042" />

<TextView
android:id="@+id/email_conf"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:fontFamily="sans-serif-medium"
android:text="TextView"
android:textAppearance="@style/TextAppearance.AppCompat.Medium"
android:textColor="@color/signIn"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/username_conf"
app:layout_constraintVertical_bias="0.051" />

<Button
android:id="@+id/btnSignout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:background="@drawable/loginbtn"
android:text="@string/sign_out"
android:textColor="@android:color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/email_conf" />

<ProgressBar
android:id="@+id/progresSign"
style="?android:attr/progressBarStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

In the dashboard.java we input the following code

package com.example.logintask;

import android.content.Intent;
import android.content.SharedPreferences;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;

public class dashboard extends AppCompatActivity {
Button signOut;
private FirebaseAuth auth;
private FirebaseAuth.AuthStateListener authListener;
ProgressBar progressBar;
TextView emailText;
TextView username;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dashboard);


progressBar = (ProgressBar) findViewById(R.id.progresSign);
signOut = (Button) findViewById(R.id.btnSignout);
auth = FirebaseAuth.getInstance();
final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); // gets the current user and stores it
emailText = (TextView) findViewById(R.id.email_conf);
username = (TextView) findViewById(R.id.username_conf);
String name = user.getDisplayName(); // gets display name gets the name of the user and stores it in the String name


username.setText(name);
emailText.setText(user.getEmail()); // gets the user email and appends it to the emailtext textview.
authListener = new FirebaseAuth.AuthStateListener() {
@Override
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
FirebaseUser user = firebaseAuth.getCurrentUser();
if (user == null) {
startActivity(new Intent(dashboard.this, login.class));
finish();
}
}
};
signOut.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
progressBar.setVisibility(View.VISIBLE);
auth.signOut();
startActivity(new Intent(dashboard.this, login.class));
progressBar.setVisibility(View.INVISIBLE);
}
});


}




}
Screenshots of working app

the github link: https://github.com/Ochuba/LoginTask

you can follow me on twitter: @samuelOchuba

May the force with you.

--

--

rake code

A developer doing his little to make the world a better place