Android Studio 无法识别 Fragment to Facebook 按钮

Android Studio doesn´t recognize Fragment to Facebook Button

我正在尝试创建一个带有按钮的应用程序以登录 Facebook,我在片段 XML 中添加了我的 Facebook 按钮,我有这个 class:

package com.cheesecake.clasi.facebooklogin;

import android.app.Fragment;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.facebook.FacebookSdk;
import com.facebook.login.widget.LoginButton;

/**
 * Created by Leonardo on 21/04/2015.
 */
public class MyFragment extends Fragment {

public MyFragment(){

}

@Override
public void onCreate(Bundle saveStanceState){
    super.onCreate(saveStanceState);
    FacebookSdk.sdkInitialize(getActivity().getApplicationContext());
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,     Bundle saveStanceState){
    return inflater.inflate(R.layout.fragment_main, container, false);
}

@Override
    public void onViewCreated(View view, Bundle saveStateStation){
    super.onViewCreated(view, saveStateStation);
    LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button);
    //loginButton.setReadPermissions("users_friends");
    loginButton.setFragment(this);
    }
}

当我添加 loginButton.setFragment(this)(它需要一个片段)时显示错误:

Error:(37, 20) error: method setFragment in class FacebookButtonBase cannot be applied to given types;`enter code here` required: Fragment found: MyFragment reason: actual argument MyFragment cannot be converted to Fragment by method invocation conversion

我不明白,因为 "MyFragment" 只是名字。

即使不查找我上面的评论,问题是您的 Fragmentandroid.app.Fragment; 将其从支持库 android.support.v4.app.Fragment.

更改为一个

或者您可以对原生片段使用包装器:

public class NativeFragmentWrapper extends android.support.v4.app.Fragment {
    private final Fragment nativeFragment;

    public NativeFragmentWrapper(Fragment nativeFragment) {
        this.nativeFragment = nativeFragment;
    }

    @Override
    public void startActivityForResult(Intent intent, int requestCode) {
        nativeFragment.startActivityForResult(intent, requestCode);
    }

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

然后在您的代码中使用它:

loginButton(new NativeFragmentWrapper(this));