Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Facebook SDK是否仅适用于活动?_Android_Facebook_Android Fragments - Fatal编程技术网

Android Facebook SDK是否仅适用于活动?

Android Facebook SDK是否仅适用于活动?,android,facebook,android-fragments,Android,Facebook,Android Fragments,我一直在尝试在我的应用程序中实现Facebook SDK,以便让用户通过该应用程序在我们的fanwall上发布消息。然而,我甚至在通过SDK登录用户时都没有成功 在SDK示例中,给出了一个简单的示例,它使用活动尝试使用单点登录对用户进行授权。我自己也试过这个例子,效果很好。我可以登录,我必须授权应用程序使用我的Facebook数据,并且我可以在LogCat中看到正在发出和接收的请求 现在,我已经尝试将相同的代码添加到我自己的应用程序中。此应用程序是基于兼容包的Fragment。有一个中心的Fra

我一直在尝试在我的应用程序中实现Facebook SDK,以便让用户通过该应用程序在我们的fanwall上发布消息。然而,我甚至在通过SDK登录用户时都没有成功

在SDK示例中,给出了一个简单的示例,它使用
活动
尝试使用单点登录对用户进行授权。我自己也试过这个例子,效果很好。我可以登录,我必须授权应用程序使用我的Facebook数据,并且我可以在LogCat中看到正在发出和接收的请求

现在,我已经尝试将相同的代码添加到我自己的应用程序中。此应用程序是基于兼容包的
Fragment
。有一个中心的
FragmentActivity
,其余的类都是简单的
Fragments
。将示例代码添加到这些
片段中时,Facebook应用程序在尝试授权时会启动半秒钟,但随后关闭,什么也没有发生。我又回到了正常状态

在这之后检查LogCat时,除了显示我添加的一些打印检查和它说它正在启动Facebook意图之外,没有任何迹象表明Facebook应用程序打开或发出任何请求:

01-12 13:19:40.874: I/System.out(6087): Calling authorize
01-12 13:19:40.874: I/ActivityManager(1380): Starting activity: Intent { cmp=com.facebook.katana/.ProxyAuth (has extras) } from pid 6087
01-12 13:19:40.874: I/System.out(6087): Called authorize
除此之外,什么也没有得到回报。没有脸谱网的检查,没有说我的钥匙错了的声明,什么都没有。Facebook的意图被称为,但几乎立即关闭,没有任何其他迹象表明它甚至是开放的

这几个小时来一直困扰着我,我开始认为常规的、提供示例的方法在
片段
中不起作用,因为
片段
的工作方式

下面是我一直使用的代码。片段由一个按钮触发,该按钮调用
FragmentTransaction
。我在这里做了一些根本错误的事情,还是Facebook SDK真的不能处理
片段
?我已经试着寻找这个问题,但我还没有找到其他人有同样的情况



编辑


刚试过使用一个
片段活动
,瞧,这确实有效。它已成功登录。看起来SDK实际上只适用于显式扩展
…Activity
的类。谁能告诉我为什么会这样?我一直认为
Fragments
在某个地方扩展了
活动

我最终使用了
FragmentActivity
与Facebook进行互动。这不是理想的解决方案,但它很有效。


具有实现
FragmentActivity
的活动,因此问题得以解决。

A
Fragment
在其层次结构中的任何位置都没有
活动。它直接从
对象扩展而来
public class FanWallFacebook extends Fragment {

    Facebook facebook = new Facebook("294678133912628");

    public FanWallFacebook() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.filler, container, false);
    }

    @Override
    public void onStart() {
        super.onStart();

        System.out.println("Calling authorize");
        facebook.authorize(getActivity(), new DialogListener() {
            @Override
            public void onComplete(Bundle values) {
                System.out.println("Completed");
            }

            @Override
            public void onFacebookError(FacebookError error) {
                System.out.println("Facebook error: "+error.getMessage());
            }


            @Override
            public void onError(DialogError e) {
                System.out.println("General error: "+e.getMessage());
            }

            @Override
            public void onCancel() {
                System.out.println("Cancelled");
            }
        });

        System.out.println("Called authorize");

    }

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

        facebook.authorizeCallback(requestCode, resultCode, data);
        System.out.println("Authorize callback'd");
    }

}