新的Facebook API 3.0。 和ActionBarSherlock的兼容性

我正在阅读Facebook的Android API 3.0文档,我不明白会话与后台活动有什么关系。 在所有例子中,我应该扩展“FacebookFragment”。 那么,如果我的整个应用程序不扩展“SherlockFragment”,这将是很好的,所以我没有看到扩展FacebookFragment作为一个选项。

如果我使用SessionLoginExample中的代码,并将我的AppID放在string中,就像facebook一样,我可以得到:

错误

10-22 17:04:26.464: E/AndroidRuntime(5491): FATAL EXCEPTION: main 10-22 17:04:26.464: E/AndroidRuntime(5491): java.lang.RuntimeException: Unable to start activity ComponentInfo{nl.specsavers.moodspecs/nl.specsavers.moodspecs.LauncherActivity}: java.lang.NullPointerException: Argument applicationId cannot be null 

我试图设置最初的检查,如果应用程序安装或没有,如果会议存在与否。

  Settings.addLoggingBehavior(LoggingBehaviors.INCLUDE_ACCESS_TOKENS); Session session = Session.getActiveSession(); if (session == null) { if (savedInstanceState != null) { session = Session.restoreSession(this, null, statusCallback, savedInstanceState); } if (session == null) { session = new Session(this); } Session.setActiveSession(session); if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) { session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback)); } } 

我需要能够以某种方式将我的应用程序ID放在某个地方,但实际上我不知道该把它放在哪里。

我需要知道如果我可以避免延长FacebookFragment,因为我使用SherlockFragment。

TNX。

FacebookFragment不公开,不适用于应用程序。

虽然样本大多使用FacebookActivity,是的 – 你不需要扩展FacebookActivity。 正如你所提到的,SessionLoginSample演示了这一点,如果你不使用FacebookActivity,你应该处理会话序列化和覆盖/转发onActivityResult如图所示。

这就是说,这听起来像是你正在碰到的主要问题是设置applicationId。 您可以在代码或元数据中设置applicationId。

在代码中:

要在代码中设置它,请定义一个包含您的应用程序ID的string常量MY_APP_ID并replace该行:

 session = new Session(this); 

有:

 session = new Session.Builder(this).setApplicationId(MY_APP_ID).build(); 

在元数据中:

要在元数据中设置它,请将以下内容添加到应用程序标记内的AndroidManifest.xml中,但不包含任何活动标记:

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

然后,在values / strings.xml中,为app_id添加一个具有您的应用程序ID的值:

 <string name="app_id">1234567890</string> 

如果不通过代码提供app_id,则不需要inheritance任何东西,必须在应用程序元数据(以及strings.xml中)中指定它。 请参阅https://developers.facebook.com/docs/reference/android/3.0/Session#APPLICATION_ID_PROPERTY

在你的AndroidManifest.xml中,你需要添加:

 <application android:label="@string/app_name" ...> ... other activity stuff here ... <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/> </application> 

然后在你的string.xml中添加app_id作为一个string。