Firebase.setAndroidContext(上下文) 导致致命异常:AsyncTask #1

Firebase.setAndroidContext(Context) causes FATAL EXCEPTION: AsyncTask #1

只需在我的应用程序的任何位置调用此方法 Firebase.setAndroidContext(this)(使用 Firebase 的第一件事)就会导致 FATAL EXCEPTION: AsyncTask #1

我 运行 'com.firebase:firebase-client-android:2.1.1+' Gradle。

有趣的是,他们提供的演示应用程序有效!而且代码和我的一模一样! https://github.com/firebase/firebase-login-demo-android

所以,有人可以帮我吗?

这是完整的堆栈:

    01-26 05:48:00.142  14666-14693/br.com.vymajoris.helpradarprototype1 E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
    Process: br.com.vymajoris.helpradarprototype1, PID: 14666
    java.lang.RuntimeException: An error occured while executing doInBackground()
        at android.os.AsyncTask.done(AsyncTask.java:300)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
        at java.util.concurrent.FutureTask.run(FutureTask.java:242)
        at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:231)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:811)
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.Object.hashCode()' on a null object reference
        at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:911)
        at com.facebook.internal.Utility.queryAppSettings(Utility.java:673)
        at com.facebook.widget.LoginButton.doInBackground(LoginButton.java:678)
        at com.facebook.widget.LoginButton.doInBackground(LoginButton.java:675)
        at android.os.AsyncTask.call(AsyncTask.java:288)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
        at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:231)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
        at java.lang.Thread.run(Thread.java:811)

没有任何代码可以使用,很难提供帮助。但是您是否传递了应用程序上下文?

创建一个名为 LoginDemoApplication:

的 class(如示例中所示)
public class LoginDemoApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Firebase.setAndroidContext(this);
    }
}

然后在AndroidManifest.xml应用标签下添加:

android:name=".LoginDemoApplication"

然后您可以像往常一样在 Activity 中创建 Firebase 引用:

Firebase mFirebaseRef = new Firebase("your_firebase_url);

编辑:

在您的 mainfests 应用程序标签中,确保您有

     <meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/facebook_app_id" />

值为developers.facebook.com

对应应用的AppID

就我而言,我不得不改变

Firebase.setAndroidContext(this); 

Firebase.setAndroidContext(this.getApplication()); 

然后修复了它。