新的Facebook API 3.0。 和ActionBarSherlock兼容性(New Fa

2019-08-01 17:53发布

我读的Facebook的Android 3.0 API的文档,我不明白是什么呢会议有后台活动做。 在所有的例子我应该延长“FacebookFragment”。 好吧,如果我的整个程序是不延长“SherlockFragment”所以我不认为延长FacebookFragment作为一个选项,将是很好的。

如果我使用SessionLoginExample代码,并把我在弦乐的AppID在非常相同的字符串作为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。

Answer 1:

FacebookFragment是不公开的,而不是用于应用程序使用。

样品也大多使用FacebookActivity不过,是的-你不需要延长FacebookActivity。 至于你提到的,SessionLoginSample说明了这一点,如果你不使用FacebookActivity你应该处理会话系列化,如图所示有覆盖/前进onActivityResult。

这就是说,它听起来就像你打的周围设置的applicationID的主要问题。 您可以在代码或元数据集的applicationID。

在代码:

要设置它的代码,定义一个包含您的应用程序ID字符串常量MY_APP_ID并更换线路:

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"/>

然后,在价值/ strings.xml中,对于具有应用ID APP_ID添加值:

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


Answer 2:

你并不需要从什么继承,如果你不提供通过代码APP_ID,您必须在您的应用程序元数据指定它(并在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>

然后添加APP_ID为您string.xml的字符串。



文章来源: New Facebook API 3.0. and ActionBarSherlock compatibility