2016-01-28 8 views
0

我试图使用FirebaseUI-Android library(版本0.3.0)显示谷歌登录选项,我遵循提及的完全相同的步骤Github存储库。但是,在我启动应用程序后,应用程序正在崩溃。NullPointerException在com.firebase.ui.auth.core.FirebaseLoginBaseActivity.onStart(FirebaseLoginBaseActivity.java:118)

的例外是:

Caused by: java.lang.NullPointerException at 
com.firebase.ui.auth.core.FirebaseLoginBaseActivity.onStart(FirebaseLoginBaseActivity.java:118) 
    at com.shajeelafzal.LoginActivity.onStart(LoginActivity.java:27) 

线#27调用super.onStart()

@Override 
protected void onStart() { 
    super.onStart(); // Line # 27 
    setEnabledAuthProvider(SocialProvider.google); 
} 

我在Application类的onCreate调用Firebase.setAndroidContext(this);

回答

2

关于FirebaseUI的一个奇妙之处在于它是一个开源项目,因此您可以检查堆栈跟踪中的行是指向哪个行。在这种情况下,line 118 of FirebaseLoginBaseActivity是:

getFirebaseRef().addAuthStateListener(mAuthStateListener); 

所以看起来你在执行onStart()不打算使用在com.shajeelafzal.LoginActivity,或者至少是getFirebaseRef()返回null。

通常的实现是一样的东西:

public class LoginActivity extends FirebaseLoginBaseActivity { 
    Firebase mFirebaseRef; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_chat); 

     mFirebaseRef = new Firebase(...); 

     ... 
    } 

    @Override 
    protected Firebase getFirebaseRef() { 
     return mFirebaseRef; 
    } 
+0

谢谢,我会尝试下一次探索代码。我有单独的小问题。而不是在对话框中显示Auth选项可以在布局中显示它?图书馆是否提供了方便的方法?否则,我认为我将不得不手动做到这一点。 –

+0

当我点击登录按钮时,应用程序崩溃。 'com.firebase.ui.auth.google.GoogleAuthProvider.login上的NullPointerException(GoogleAuthProvider.java:119)at com.firebase.ui.auth.core.FirebaseLoginDialog $ 2.onClick(FirebaseLoginDialog.java:181)',试图了解'FirebaseLoginDialog'的代码 –

+1

关于上述崩溃的说明:在onStart方法中,我启用了auth提供程序:'setEnabledAuthProvider(SocialProvider.google);',我使用了'SocialProvider.google',因为我无法导入' AuthProviderType.GOOGLE' –

相关问题