2014-05-02 17 views
6

Mam problem z Facebookiem SDK. Używam Intellij Idea i udało mi się dodać sdk do projektu i przynajmniej go skompilować.Błąd LoginButton.java - problemy z rozpoczęciem pracy z Facebookiem SDK na Androidzie

Więc zacznę z pustego projektu z pojedynczego działania i dodaję LoginButton tak, że mój layout.xml wygląda następująco:

<?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> 

Pierwszym problemem jest to, że ten komunikat przy podglądzie UI okno:

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) 

Więc wygląda na to, że jest problem z plikiem R, ale tak czy inaczej, to nadal kompiluje.

Tak szybko, jak aplikacja działa na emulatorze, to wywala z tego stosu:

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) 

Jestem nowy Android, więc nie mam pojęcia, co robić. Mam na myśli, mój kod rzuca różnego rodzaju wyjątki: p, ale nie mam pojęcia, dlaczego I dlaczego kod na Facebooku facebook rzucił wyjątek zerowy.

Odpowiedz

8

Byłem też w obliczu tego samego problemu:

chowałem moim app id jak ten:

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

ale co to powinna być:

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

nigdy nie myślałem, że to może stwórz taki błąd. Powinni to potraktować jako ostrzeżenie w swoim tutorialu!

Spróbuj. Jeśli nie jest to rozwiązanie, powinno to być coś związanego z identyfikatorem aplikacji. Być może nie dodałeś klucza do Twojej aplikacji. Wykonaj każdy krok w samouczku this i nie pomijaj żadnych.

Jeśli to nadal nie rozwiązuje problemu, porównaj facebook powiązany z próbkami z Facebooka zapakowanymi w zestaw SDK.

Powodzenia!

0

Wcześniej miałem do czynienia z tym samym problemem i dla mnie problem dotyczył niewłaściwej nazwy meta-danych. Upewnij się, że masz rację.

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

zamiast

<meta-data android:name="com.facebook.sdk.Application" android:value="@string/facebook_app_id"/> 
Powiązane problemy