【问题标题】:Firebase.setAndroidContext(Context) causes FATAL EXCEPTION: AsyncTask #1Firebase.setAndroidContext(Context) 导致致命异常:AsyncTask #1
【发布时间】:2015-01-26 08:02:21
【问题描述】:

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

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

有趣的是,他们提供的演示应用程序有效!而且代码和我的一模一样! 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$3.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$1.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$1.doInBackground(LoginButton.java:678)
        at com.facebook.widget.LoginButton$1.doInBackground(LoginButton.java:675)
        at android.os.AsyncTask$2.call(AsyncTask.java:288)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)
        at android.os.AsyncTask$SerialExecutor$1.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)

【问题讨论】:

  • 如果说“那个代码和我的一样”的每个人都是正确的,我们的错误就会少很多。

标签: android firebase


【解决方案1】:

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

创建一个名为 LoginDemoApplication 的类(如示例中所示):

public class LoginDemoApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        Firebase.setAndroidContext(this);
    }
}

然后在AndroidManifest.xml下的application标签下添加:

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

【讨论】:

  • 我没有发布任何代码,因为您发布的代码是我正在使用的代码!无论如何,我创建了另一个项目,它正在使用新项目。谢谢你的时间。我会关闭这个问题,但如果有人有解释,我会保持打开状态。
  • 看看 EDIT 是否有帮助?在失败的项目中。
  • 是的,成功了!多么奇怪……我没有添加那个元数据标签,因为我是先登录谷歌的!但是,我只能在今天晚些时候测试完整的身份验证过程。但我相信它会工作得很好。如果有任何问题,我会在这里发布。
  • Facebook SDK 使用应用 id 来查询 Graph API 以获取应用设置,该 id 是从清单中读取的。如果您不提供它,图形 api 调用将返回 null 并导致您的 NullPointerException。很高兴我能帮上忙——现在回去工作! :)
【解决方案2】:

就我而言,我必须改变

Firebase.setAndroidContext(this); 

Firebase.setAndroidContext(this.getApplication()); 

然后就解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 2015-09-17
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 2015-07-16
    • 2015-07-12
    相关资源
    最近更新 更多