I'm trying out firebase. and I have bumped into a problem. My code does not have errors. But when I run it I get this error:
E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.NullPointerException
        at com.example.espina.momshie.MainActivity.checkUserValidation(MainActivity.java:159)
        at com.example.espina.momshie.MainActivity.access$000(MainActivity.java:28)
        at com.example.espina.momshie.MainActivity$1$1.onDataChange(MainActivity.java:71)
        at com.google.android.gms.internal.zzdtz.zza(Unknown Source)
        at com.google.android.gms.internal.zzdvu.zzbuu(Unknown Source)
        at com.google.android.gms.internal.zzdwa.run(Unknown Source)
        at android.os.Handler.handleCallback(Handler.java:615)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4960)
        at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
        at dalvik.system.NativeStart.main(Native Method)
I don't know why this is happening but I suspect it's the toString() warning. How do I fix this?
I haven't implemented the String Builder, so this question is a bit different to the other one.
And by the way here's my code:
 package com.example.espina.momshie;
 import android.content.Intent;
 import android.support.annotation.NonNull;
 import android.support.v7.app.AppCompatActivity;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.view.View;
 import android.widget.Button;
 import android.widget.EditText;
 import android.widget.Toast;
 import com.Welcome.Welcome;
 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.database.DataSnapshot;
 import com.google.firebase.database.DatabaseError;
 import com.google.firebase.database.DatabaseReference;
 import com.google.firebase.database.FirebaseDatabase;
 import com.google.firebase.database.ValueEventListener;
 import com.loginpack.LoginActivity;
import java.util.Iterator;
public class MainActivity extends AppCompatActivity {
//VIEW AND WIDGETS
Button createUser, moveToLogin;
EditText userEmailEdit, userPasswordEdit;
//FIREBASE AUTH FIELDS
FirebaseAuth nAuth;
FirebaseAuth.AuthStateListener nAuthlistener;
DatabaseReference mDatabaseRef, mUserCheckData;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    //ASSIGN ID
    createUser = (Button) findViewById(R.id.createUserBtn);
    moveToLogin = (Button) findViewById(R.id.moveToLogin);
    userEmailEdit = (EditText) findViewById(R.id.emailEditTextCreate);
    userPasswordEdit = (EditText) findViewById(R.id.passEditTextCreate);
    //ASSIGN INSTANCE
    mDatabaseRef = FirebaseDatabase.getInstance().getReference();
    mUserCheckData =  FirebaseDatabase.getInstance().getReference().child("Users");
    nAuth = FirebaseAuth.getInstance();
    nAuthlistener = new FirebaseAuth.AuthStateListener(){
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();
            if (user != null) {
                final String emailForVer = user.getEmail();
                mUserCheckData.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        checkUserValidation(dataSnapshot, emailForVer);
                    }
                    @Override
                    public void onCancelled(DatabaseError databaseError) {
                    }
                });
            } else {
            }
        }
    };
    //ON CLICK LISTENER
    createUser.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view) {
        final String userEmailString, userPassString;
        userEmailString = userEmailEdit.getText().toString().trim();
        userPassString = userPasswordEdit.getText().toString().trim();
         if (!TextUtils.isEmpty(userEmailString) && !TextUtils.isEmpty(userPassString))
         {
             nAuth.createUserWithEmailAndPassword(userEmailString,userPassString).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
                 @Override
                 public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful())
                    {
                        DatabaseReference mChildDatabase = mDatabaseRef.child("Users").push();
                        String key_user = mChildDatabase.getKey();
                        mChildDatabase.child("isVerified").setValue("unverified");
                        mChildDatabase.child("userKey").setValue(key_user);
                        mChildDatabase.child("emailUser").setValue(userEmailString);
                        mChildDatabase.child("passWordUser").setValue(userPassString);
                        Toast.makeText(MainActivity.this, "User Acount Created!", Toast.LENGTH_LONG).show();
                        startActivity(new Intent(MainActivity.this, Profile.class));
                    }
                    else
                    {
                        Toast.makeText(MainActivity.this, "User Account Creation Fail", Toast.LENGTH_LONG).show();
                    }
                 }
             });
         }
        }
    });
    //MOVE TO LOGIN
    moveToLogin.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view){
        startActivity(new Intent(MainActivity.this, LoginActivity.class));
        }
    });
}
private void checkUserValidation(DataSnapshot dataSnapshot, String emailForVer) {
    Iterator iterator = dataSnapshot.getChildren().iterator();
    while (iterator.hasNext())
    {
        DataSnapshot dataUser = (DataSnapshot) iterator.next();
        if( dataUser.child("emailUser").getValue().toString().equals(emailForVer))
        {
            if (dataUser.child("isVerified").getValue().toString().equals("unverified"))
            {
                Intent in = new Intent( MainActivity.this, Profile.class);
                in.putExtra("USER_KEY" , dataUser.child("userKey").getValue().toString());
                startActivity(in);
            }else
            {
                startActivity(new Intent(MainActivity.this, Welcome.class));
            }
        }
    }
}
@Override
protected void onStart() {
    super.onStart();
    nAuth.addAuthStateListener(nAuthlistener);
}
@Override
protected void onStop() {
    super.onStop();
    nAuth.removeAuthStateListener(nAuthlistener);
}
}
Thank you so much. Any help is appeciated.
 
    