1

FacebookSDKをAndroidプロジェクトに統合しようとしています。Facebookダイアログにウォールメッセージを投稿しています。[共有]をクリックすると、メッセージがFacebookウォールに正常に投稿されます。しかし、私のゲームはまだクラッシュします!

アクティビティを拡張するメインクラスから呼び出します。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):Webviewの読み込みURL: https ://m.facebook.com/dialog/feedW / AudioFlinger(32):80ミリ秒の間書き込みがブロックされ、275の遅延書き込み、スレッド0xff88 D / dalvikvm(957):GC_CONCURRENTが539Kを解放、15%が7403K / 8647Kを解放、3ms+47msを一時停止D/webviewglue(957):nativeDestroyビュー:0x925250 D / Facebook-WebView(957):リダイレクトURL:fbconnect:// success?post_id = 570020602_418386674846932 D / AndroidRuntime(957):VMのシャットダウンW / dalvikvm(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):android.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)E / AndroidRuntime(957):java.lang.reflect.Method.invokeNative(ネイティブメソッド)E / AndroidRuntime(957) ):at java.lang.reflect.Method.invoke(Method.java:491)E / AndroidRuntime(957):at 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):dalvik.system.NativeStart.main(ネイティブメソッド)W / ActivityManager(67):Force終了アクティビティcom.companyname.mainclassname/.MainClassName319)E / AndroidRuntime(957):android.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)E / AndroidRuntime(957):java.lang.reflect.Method.invokeNative(Native Method)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):dalvik.system.NativeStart.main(ネイティブメソッド)W / ActivityManager(67):アクティビティcom.companynameを強制終了します。 mainclassname / .MainClassName319)E / AndroidRuntime(957):android.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)E / AndroidRuntime(957):java.lang.reflect.Method.invokeNative(Native Method)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):dalvik.system.NativeStart.main(ネイティブメソッド)W / ActivityManager(67):アクティビティcom.companynameを強制終了します。 mainclassname / .MainClassNamedispatchMessage(Handler.java:99)E / AndroidRuntime(957):at android.os.Looper.loop(Looper.java:126)E / AndroidRuntime(957):at android.app.ActivityThread.main(ActivityThread.java: 3997)E / 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):dalvik.system.NativeStart.main(ネイティブメソッド)W / ActivityManager(67):アクティビティcom.companyname.mainclassname/.MainClassNameを強制終了しますdispatchMessage(Handler.java:99)E / AndroidRuntime(957):at android.os.Looper.loop(Looper.java:126)E / AndroidRuntime(957):at android.app.ActivityThread.main(ActivityThread.java: 3997)E / 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):dalvik.system.NativeStart.main(ネイティブメソッド)W / ActivityManager(67):アクティビティcom.companyname.mainclassname/.MainClassNameを強制終了します126)E / AndroidRuntime(957):android.app.ActivityThread.main(ActivityThread.java:3997)E / AndroidRuntime(957):java.lang.reflect.Method.invokeNative(ネイティブメソッド)E / AndroidRuntime(957) ):at java.lang.reflect.Method.invoke(Method.java:491)E / AndroidRuntime(957):at 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):dalvik.system.NativeStart.main(ネイティブメソッド)W / ActivityManager(67):Force終了アクティビティcom.companyname.mainclassname/.MainClassName126)E / AndroidRuntime(957):android.app.ActivityThread.main(ActivityThread.java:3997)E / AndroidRuntime(957):java.lang.reflect.Method.invokeNative(ネイティブメソッド)E / AndroidRuntime(957) ):at java.lang.reflect.Method.invoke(Method.java:491)E / AndroidRuntime(957):at 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):dalvik.system.NativeStart.main(ネイティブメソッド)W / ActivityManager(67):Force終了アクティビティcom.companyname.mainclassname/.MainClassNameinvoke(Method.java:491)E / AndroidRuntime(957):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:841)E / AndroidRuntime(957):atcom.android.internal。 os.ZygoteInit.main(ZygoteInit.java:599)E / AndroidRuntime(957):dalvik.system.NativeStart.main(ネイティブメソッド)W / ActivityManager(67):強制終了アクティビティcom.companyname.mainclassname / .MainClassNameinvoke(Method.java:491)E / AndroidRuntime(957):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:841)E / AndroidRuntime(957):atcom.android.internal。 os.ZygoteInit.main(ZygoteInit.java:599)E / AndroidRuntime(957):dalvik.system.NativeStart.main(ネイティブメソッド)W / ActivityManager(67):強制終了アクティビティcom.companyname.mainclassname / .MainClassName

4

1 に答える 1

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");
  }
}
于 2012-05-04T02:09:37.040 に答える