2012-05-03 60 views
1

我试图将Facebook SDK整合到Android项目中。我在Facebook对话框中发布了一条留言信息,当我点击“分享”时,该信息在我的Facebook墙上成功发布。但是我的游戏仍然崩溃!Android应用程序在使用Facebook对话框共享后崩溃

我从我的主类中调用它来扩展Activity。要弹出facebook UI对话框,我使用runOnUiThread。 (的AsyncTask并不在我的代码工作。)

public static int fbShareScores(final String sBody) 
{ 
try 
{ 
    oThis.runOnUiThread ( 
    new Runnable () 
    { 
     @Override 
     public void run () 
     { 
     Bundle params = new Bundle(); 
     params.putString("caption", "Caption"); 
     params.putString("description", sBody); 
    params.putString("picture", URL_TO_PNG); 
     params.putString("name", "Name"); 
     oThis.mFacebook.dialog(oThis, "feed", params, null); 
     } 
    } 
); 
} 
catch (Exception e) 
{ 
    Log.d(Globals.sApplicationName, "share scores: Dialog: " + e.getMessage()); 
} 

return 1; 
} 

下面是logcat的我的错误:

d/Facebook的-的WebView(957):网页视图加载网址: https://m.facebook.com/dialog/feed W/AudioFlinger( (957):nativeDestroy视图:写入锁定 为80毫秒,275延迟写入,线程0xff88 D/dalvikvm(957): GC_CONCURRENT已释放539K,15%免费7403K/8647K,暂停3ms + 47ms D/webviewglue 0x925250 D/Facebook-WebView(957):重定向URL: fbconnect:// succes (957):threadid = 1: 线程正在以未捕获的异常退出(group = 0x40014760) E/AndroidRuntime(957):致命异常:主要E/AndroidRuntime(957): 显示java.lang.NullPointerException E/AndroidRuntime(957):在 com.facebook.android.FbDialog $ FbWebViewClient.shouldOverrideUrlLoading(FbDialog.java:143) E/AndroidRuntime(957):在 android.webkit.CallbackProxy.uiOverrideUrlLoading(CallbackProxy.java:219) E/AndroidRuntime(957):在 android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:319) E/AndroidRuntime(957):在 机器人。 os.Handler.dispatchMessage(Handler.java:99 ) E/AndroidRuntime(957):在android.os.Looper.loop(Looper.java:126) E/AndroidRuntime(957):在 android.app.ActivityThread.main(ActivityThread.java:3997) È/AndroidRuntime(957):在 java.lang.reflect.Method.invokeNative(本机方法) E/AndroidRuntime(957):在 java.lang.reflect.Method.invoke(Method.java:491) E/AndroidRuntime(957):在 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:841) E/AndroidRuntime(957):在 com.android.internal.os.ZygoteInit.main(ZygoteInit .java:599) E/AndroidRuntime(957):at dalvik.system.NativeStart.main(Native Method)W/ActivityMan几岁(67):强制完成活动 com.companyname.mainclassname/.MainClassName

+0

你是否在不同的线程上运行它,而不是UI? –

+0

我不确定我是否理解。我是Android开发新手。我的游戏的主类'活动在主线程上,它调用runOnUiThread,它运行Facebook对话框。 FbDialog.java是Facebook的SDK,我不知道FB是否使用另一个线程,我从我的游戏中引用它。 – Lisa

+0

您是否使用常规Facebook类或* AsyncFacebookRunner *?如果你不使用后者,那么你没有理由使用* runOnUiThread *,因为你在同一个线程中。这与android无关,它更像是一个java事物,更重要的是:使用线程。 –

回答

0

,当我在上面的代码行更改为消失的错误:

oThis.mFacebook.dialog(oThis, "feed", params, new PostStatusDialogListener()); 

然后添加一个新的DialogListener :

public class PostStatusDialogListener implements DialogListener 
{ 
    @Override 
    public void onComplete(Bundle values) { 
    Log.d(Globals.sApplicationName, "PostStatusDialogListener::onComplete"); 
    } 

    @Override 
    public void onFacebookError(FacebookError error) { 
    Log.d(Globals.sApplicationName, "PostStatusDialogListener::onFacebookError: " + error.getMessage()); 
    } 

    @Override 
    public void onError(DialogError error) { 
    Log.d(Globals.sApplicationName, "PostStatusDialogListener::DialogError: " + error.getMessage()); 
    } 

    @Override 
    public void onCancel() { 
    Log.d(Globals.sApplicationName, "PostStatusDialogListener::onCancel"); 
    } 
} 
相关问题