首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LoginButton.java错误-在安卓系统上使用facebook sdk时遇到问题

LoginButton.java错误-在安卓系统上使用facebook sdk时遇到问题
EN

Stack Overflow用户
提问于 2014-05-03 07:33:52
回答 2查看 1.7K关注 0票数 6

我在使用facebook sdk时遇到了麻烦。我使用Intellij Idea,我设法将sdk添加到项目中,并至少对其进行了编译。

因此,我从一个只有一个activity的空白项目开始,并添加了一个LoginButton,使我的Layout.xml看起来像这样:

代码语言:javascript
复制
    <?xml version="1.0" encoding="utf-8"?>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                  android:orientation="vertical"
                  android:layout_width="fill_parent"
                  android:layout_height="fill_parent"
        >
    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Hello World, MainActivity"
            />

    <com.facebook.widget.LoginButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
</LinearLayout>

第一个问题是,我在UI预览窗口中收到以下消息:

代码语言:javascript
复制
android.content.res.Resources$NotFoundException: Could not resolve resource value: 0x7F060006.
    at android.content.res.BridgeResources.throwException(BridgeResources.java:693)
    at android.content.res.BridgeResources.getColor(BridgeResources.java:185)
    at com.facebook.widget.LoginButton.<init>(LoginButton.java:237)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:375)
    at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:100)
    at com.android.tools.idea.rendering.ProjectCallback.loadView(ProjectCallback.java:169)
    at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207)
    at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:135)
    at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:755)
    at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64)
    at android.view.LayoutInflater.rInflate(LayoutInflater.java:727)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:492)
    at android.view.LayoutInflater.inflate(LayoutInflater.java:373)
    at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:399)
    at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:336)
    at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:332)
    at com.android.tools.idea.rendering.RenderService$3.compute(RenderService.java:564)
    at com.android.tools.idea.rendering.RenderService$3.compute(RenderService.java:553)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:932)
    at com.android.tools.idea.rendering.RenderService.createRenderSession(RenderService.java:553)
    at com.android.tools.idea.rendering.RenderService.render(RenderService.java:626)
    at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.doRender(AndroidLayoutPreviewToolWindowManager.java:575)
    at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager.access$1700(AndroidLayoutPreviewToolWindowManager.java:81)
    at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$6$1.run(AndroidLayoutPreviewToolWindowManager.java:521)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:178)
    at com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:212)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:171)
    at org.jetbrains.android.uipreview.AndroidLayoutPreviewToolWindowManager$6.run(AndroidLayoutPreviewToolWindowManager.java:516)
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:320)
    at com.intellij.util.ui.update.MergingUpdateQueue.execute(MergingUpdateQueue.java:310)
    at com.intellij.util.ui.update.MergingUpdateQueue$2.run(MergingUpdateQueue.java:254)
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:269)
    at com.intellij.util.ui.update.MergingUpdateQueue.flush(MergingUpdateQueue.java:227)
    at com.intellij.util.ui.update.MergingUpdateQueue.run(MergingUpdateQueue.java:217)
    at com.intellij.util.concurrency.QueueProcessor.runSafely(QueueProcessor.java:238)
    at com.intellij.util.Alarm$Request$1.run(Alarm.java:327)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)

所以看起来R文件有问题,但不管怎样,它仍然可以编译。

一旦应用程序在模拟器上运行,它就会崩溃,堆栈如下:

代码语言:javascript
复制
05-02 19:15:35.073    2023-2023/com.Jam D/dalvikvm﹕ Not late-enabling CheckJNI (already on)
05-02 19:15:35.453    2023-2029/com.Jam D/dalvikvm﹕ Debugger has detached; object registry had 1 entries
05-02 19:15:36.014    2023-2023/com.Jam D/﹕ HostConnection::get() New Host Connection established 0xb91d7290, tid 2023
05-02 19:15:36.514    2023-2023/com.Jam W/EGL_emulation﹕ eglSurfaceAttrib not implemented
05-02 19:15:36.564    2023-2023/com.Jam D/OpenGLRenderer﹕ Enabling debug mode 0
05-02 19:15:36.644    2023-2036/com.Jam W/dalvikvm﹕ threadid=11: thread exiting with uncaught exception (group=0xb1d8cb20)
05-02 19:15:36.644    2023-2036/com.Jam E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
    Process: com.Jam, PID: 2023
    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:841)
     Caused by: java.lang.NullPointerException
            at java.util.concurrent.ConcurrentHashMap.containsKey(ConcurrentHashMap.java:911)
            at com.facebook.internal.Utility.queryAppSettings(Utility.java:372)
            at com.facebook.widget.LoginButton$1.doInBackground(LoginButton.java:667)
            at com.facebook.widget.LoginButton$1.doInBackground(LoginButton.java:664)
            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:841)

我是Android的新手,所以我不知道该怎么做。我的意思是,我的代码会抛出各种各样的异常:p,但我不知道为什么facebook SDK代码会抛出null异常。

EN

回答 2

Stack Overflow用户

发布于 2014-06-05 14:25:50

我也面临着同样的问题:

我把我的app id写成这样:

代码语言:javascript
复制
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="MY_APP_ID"/>

但它应该是:

代码语言:javascript
复制
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>

我从来没有想过这会造成这样的错误。我想他们应该把这个作为警告放在他们的教程中!

试试看。如果这不是解决方案,那么它应该与app ID相关。您可能没有将keyhash添加到应用程序中。按照this教程中的每一步操作,不要跳过任何一步。

如果它仍然不能解决问题,请比较与facebook相关的SDK打包的facebook示例。

祝好运!

票数 8
EN

Stack Overflow用户

发布于 2016-11-04 18:19:53

我曾经遇到过同样的问题,对我来说,这个问题与错误的元数据名称有关。确保你做对了。

代码语言:javascript
复制
<meta-data android:name="com.facebook.sdk.ApplicationId"   android:value="@string/facebook_app_id"/>

而不是

代码语言:javascript
复制
<meta-data android:name="com.facebook.sdk.Application"   android:value="@string/facebook_app_id"/>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23438496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档