方法调用toString()可能会产生Null指针

时间:2017-09-30 13:11:24

标签: android firebase firebase-realtime-database

我正在尝试使用firebase。而且我遇到了一个问题。我的代码没有错误。但是当我运行它时,我得到了这个错误:

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)

我不知道为什么会这样,但我怀疑它是toString()警告。我该如何解决这个问题?

我还没有实现String Builder,所以这个问题与另一个问题有点不同。

顺便说一句,这是我的代码:

 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);
}

}

非常感谢你。任何帮助都是预先确定的。

0 个答案:

没有答案