【问题标题】:doInBackground() error on facebook api in android studioandroid studio中facebook api上的doInBackground()错误
【发布时间】:2016-06-24 03:55:18
【问题描述】:

我按照 Facebook 教程集成 SDK,在我的 .xml 文件中添加登录到 Facebook 按钮后,我的应用程序将编译、打开(在我的 Nexus 4 上运行 Lollipop,项目针对 kitkat +) ,然后崩溃。我正在开发完全更新的 Android Studio。

Logcat:

02-07 22:48:24.340    1563-1600/com.example.prachi.mapsapplication E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
Process: com.example.prachi.mapsapplication, PID: 1563
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:818)
 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.get(ConcurrentHashMap.java:746)
        at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:774)
        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:818)

.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
android:id="@+id/main">

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Adventure Options"
    android:id="@+id/options"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="139dp"
    android:onClick="optionOnClick" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Random Adventure"
    android:id="@+id/random"
    android:layout_marginTop="57dp"
    android:onClick="randomOnClick"
    android:layout_below="@+id/authButton"
    android:layout_alignStart="@+id/options" />

<com.facebook.widget.LoginButton
    android:id="@+id/authButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true" />

【问题讨论】:

    标签: java android facebook android-studio


    【解决方案1】:

    如果您没有在清单应用程序标签中包含应用程序 ID,它将崩溃。 如果是这种情况,请确保您的应用已在您的 Facebook 开发者帐户中注册,获取应用 ID,并将其放入您的字符串值中。

    <string name="app_id">XXXXXXXXXXXXXXX</string>
    

    之后,将以下内容放入清单中的应用程序标记中:

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

    【讨论】:

    • 谢谢你拯救了我的一天。我在我的应用程序标签中添加了 并解决了这个问题。
    • @MortenEngell 感谢您的帮助。
    • 伟大的@MortenEngell
    【解决方案2】:

    您似乎没有添加 Facebook 应用程序 ID。如果是这样,您必须在Facebook Developers Dashboard 中创建应用程序并在仪表板中创建一个新应用程序。你会得到一个应用程序ID。将应用程序 ID 保存在您的 values/string.xml 文件中。

    <string name="facebook_app_id">XXXXXXXXXXXXXXX</string>
    

    然后在 AndroidManifest.xml 中为你的应用添加一个元标记

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 1970-01-01
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多