2011-09-09 18 views
0

Android SDkを使用してFacebook APIを使って作業しています。他のアクティビティでFacebookの機能を呼び出せません

私が同じアクティビティ(シングルアクティビティ)にいる場合、私はウォールポスト、 "App Request"などの機能を使用することができます。しかし、これらの機能を他のアクティビティ3回目/ 4回目のアクティビティ(ナビゲーション時)「Wall Post」、「App request」などのページにアクセスできません。 誰かが私を助けてくれますか?私が何かを逃しているかどうか教えてください。すべてのアクティビティのoncreate()メソッドでは、setconnection()とgetID()を使用しています。私はフェイスブックの機能から、メニューを使用してFacebookの機能を呼び出すよりも、あなたは、各アクティビティのFacebookの新しいオブジェクトを作成しないでください

public void setConnection() { 
     mContext = this; 
     mFacebook = new Facebook(getResources().getString(R.string.FACEBOOK_ID_TEST)); 
     mAsyncRunner = new AsyncFacebookRunner(mFacebook); 

    } 

    public boolean isSession() { 
     sharedPrefs = PreferenceManager.getDefaultSharedPreferences(mContext); 
     String access_token = sharedPrefs.getString("access_token", "x"); 
     Long expires = sharedPrefs.getLong("access_expires", -1); 
     Log.d(TAG, access_token); 

     if (access_token != null && expires != -1) { 
       mFacebook.setAccessToken(access_token); 
       mFacebook.setAccessExpires(expires); 
     } 
     return mFacebook.isSessionValid(); 
} 

    public void getID() 
    { 

     Bundle bundle = new Bundle(); 
     bundle.putString("fields", "birthday"); 
     try { 
      mFacebook.request("me/friends", bundle); 
     } catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      Log.e("Error in FaceBook Friends List","Exception = "+e.getMessage()); 
      e.printStackTrace(); 
     } 
     if (isSession()) { 
       Log.d(TAG, "sessionValid"); 
       try { 
        mFacebook.request("me/friends", bundle); 
       } catch (MalformedURLException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        Log.e("Error in FaceBook Friends List","Exception = "+e.getMessage()); 
        e.printStackTrace(); 
       } 
     } else { 
       // no logged in, so relogin 
       Log.d(TAG, "sessionNOTValid, relogin"); 
       mFacebook.authorize(this, PERMISSIONS, new LoginDialogListener()); 
     } 
    } 

答えて

0

以下は私のコードです。私はあなたの主な活動で初期化し、他の活動を通じてこのオブジェクトを使用する静的なFacebookのオブジェクトを持つユーティリティクラスを持っていることをお勧めします。

など。

Class Utiltiy { 
    public static Facebook mFacebook; 

    public static void initialize() { 
     mFacebook = new Facebook(app_id); 
    } 
} 

あなたはあなたの主な活動ののonCreate()

でUtility.initialize()を呼び出し、あなたはFacebookのAPI呼び出しを行うために必要な場所は、使用することができます:

Utility.mFacebook.requestを(。 ...)。

希望すると便利です。

関連する問題