android - Facebook SDK 与 Android 中的 fragment 集成?

标签 android facebook tabs android-fragments

我正在为 Android 应用程序使用默认的标签+滑动模板,并尝试包括 Facebook 集成。我的应用程序如下所示:MainActivity 有两个选项卡 - 其中一个的选项卡内容包括 Facebook 的登录按钮。

不过教程上Facebook website (第 6 步)仅包含用于 Activity 的代码。我在为一个 fragment 实现这个时遇到了麻烦。我只想在单击与第一个选项卡对应的 fragment 中的“登录”按钮时登录 FB 并检索 FB 用户数据。

这是 fragment 代码:

    /**
 * A fragment representing a section of the app.
 */
public static class SectionFragment extends Fragment
{
    /**
     * The fragment argument representing the section number for this
     * fragment.
     */
    public static final String ARG_SECTION_NUMBER = "section_number";

    public SectionFragment() {}

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        if(getArguments().getInt(ARG_SECTION_NUMBER) == tabSection.FACEBOOK.ordinal())
        {
            View view = inflater.inflate(R.layout.fragment_facebook, container, false);

            Button loginButton = (Button) view.findViewById(R.id.login_button);

            loginButton.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v)
                {
                    //login to Facebook on click
                }
            });

            return view;
        }
        else if(getArguments().getInt(ARG_SECTION_NUMBER) == tabSection.CONTACTS.ordinal())
        { 
            View view = inflater.inflate(R.layout.fragment_contacts, container, false);

            return view;
        }

        return null;
    }
}

这是 Facebook 教程代码:

package com.firstandroidapp;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.widget.TextView;
import com.facebook.*;
import com.facebook.model.*;

public class MainActivity extends Activity {

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

// start Facebook Login
Session.openActiveSession(this, true, new Session.StatusCallback() {

  // callback when session changes state
  @Override
  public void call(Session session, SessionState state, Exception exception) {
    if (session.isOpened()) {

      // make request to the /me API
      Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {

        // callback after Graph API response with user object
        @Override
        public void onCompleted(GraphUser user, Response response) {
          if (user != null) {
            TextView welcome = (TextView) findViewById(R.id.welcome);
            welcome.setText("Hello " + user.getName() + "!");
          }
        }
      });
    }
  }
});
  }

  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
  }

}

所有这些回调方法都对应于一个 Activity ,而不是一个 fragment 。我需要帮助将它们放在 fragment 中并仅在单击按钮时调用。

最佳答案

Facebook example可能更符合您正在寻找的内容。您可以使用已定义的 UserSettingsFragment 或使用 LoginButton 类和您自己定义的 Fragment。

关于android - Facebook SDK 与 Android 中的 fragment 集成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14172038/

相关文章:

html - Materialise 事件选项卡在 Modal 中不起作用

java - 在 Java 中制作退格按钮,删除 Textview 中的最后一个字符

android - Facebook 登录回调 session 始终关闭

ios - 在 Facebook iOS SDK 4.0 上显式分享

php - 双重身份验证和备份代码

javascript - jQuery - 检查 anchor 的 URL

javascript - jQuery Accordion 显示特定选项卡

android - 如何撤销我的应用程序从用户的 google gmail AccountManager.getAuthToken(

android - 如何使用字符串在 Mediastore 游标中实际搜索歌曲

手机锁定时 Android 服务停止工作