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());
然后修复了它。
只需在我的应用程序的任何位置调用此方法 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());
然后修复了它。