如何保存FirabaseAuth实例

时间:2018-12-06 11:02:10

标签: android firebase firebase-authentication

我有一个问题困扰了几天的应用程序。包含一个登录名,然后将您发送到主要活动,其中有一个按钮为您提供奖励(硬币)。此按钮将所有数据(用户ID,电子邮件和硬币数量)保存在firebaseDB上。如果我离开应用程序并在几秒钟后返回到该应用程序,则该应用程序将崩溃,因为它无法访问用户ID和电子邮件。崩溃的代码是这个

 public void addCoins(View view) {

    mCoins += 5;
    user newUser = new user(mAuth.getCurrentUser().getUid(), mAuth.getCurrentUser().getEmail(), mCoins); //---> Here
    mRootRef.child("UserList").child(newUser.getUid()).setValue(newUser);
}

我相信我可以将uid和电子邮件存储在文件中,但这就是我不想做的。我想我也可以保存实例,但是我不确定该怎么做。如果有人可以帮助我,我将不胜感激。

谢谢

编辑:

FirebaseAuth初始化:

private FirebaseAuth.AuthStateListener authListener;

protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     mAuth = FirebaseAuth.getInstance();
     final FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser();
     /*Rest of the code ....*/
}

和日志跟踪

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.firebase.auth.FirebaseUser.getUid()' on a null object reference
        at com.capie.clashgems.MainActivity.addCoins(MainActivity.java:244)
        at java.lang.reflect.Method.invoke(Native Method) 
        at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:385) 
        at android.view.View.performClick(View.java:6294) 
        at android.view.View$PerformClick.run(View.java:24770) 
        at android.os.Handler.handleCallback(Handler.java:790) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:164) 
        at android.app.ActivityThread.main(ActivityThread.java:6494) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:440) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 

尝试在空引用上调用虚拟方法。我相信是由于我之前提到的原因,该变量在离开应用程序几秒钟后变为空。

0 个答案:

没有答案