首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >新的Facebook API 3.0。和ActionBarSherlock兼容性

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

Stack Overflow用户
提问于 2012-10-22 23:43:55
回答 2查看 13.3K关注 0票数 15

我正在阅读facebook Android API 3.0文档,我不明白会话与后台活动有什么关系。在所有示例中,我都应该扩展"FacebookFragment“。好吧,如果我的整个应用程序不扩展"SherlockFragment“,那就太好了,所以我不认为扩展FacebookFragment是一种选择。

如果我使用SessionLoginExample中的代码,并将我的AppID放在与facebook相同的字符串中,我会得到:

错误

代码语言:javascript
复制
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

我正在尝试设置应用程序是否已安装以及会话是否存在的初始检查。

代码语言:javascript
复制
 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放在某个地方,它实际上是可以的,但我找不到它放在哪里。

我需要知道在使用SherlockFragment时是否可以避免扩展FacebookFragment。

Tnx。

EN

回答 2

Stack Overflow用户

发布于 2012-10-23 03:51:25

FacebookFragment不是公共的,不适合应用程序使用。

但是,示例主要使用FacebookActivity,是的,您需要而不是来扩展FacebookActivity。正如您所提到的,SessionLoginSample演示了这一点,如果您不使用FacebookActivity,那么您应该处理会话序列化并覆盖/转发onActivityResult,如图所示。

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

在代码中:

要在代码中设置它,请定义一个包含应用程序id的字符串常量MY_APP_ID,并替换该行:

代码语言:javascript
复制
session = new Session(this);

通过以下方式:

代码语言:javascript
复制
session = new Session.Builder(this).setApplicationId(MY_APP_ID).build();

在元数据中:

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

代码语言:javascript
复制
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>

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

代码语言:javascript
复制
<string name="app_id">1234567890</string>
票数 54
EN

Stack Overflow用户

发布于 2012-10-23 00:46:12

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

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

代码语言:javascript
复制
<application android:label="@string/app_name" ...>
  ... other activity stuff here ...
  <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/>
</application>

然后将app_id作为字符串添加到string.xml中。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13014938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档