Java Android Studio无法识别Facebook按钮的碎片

Java Android Studio无法识别Facebook按钮的碎片,java,android,fragment,Java,Android,Fragment,我正在尝试使用一个按钮来登录Facebook,我正在添加我的Facebook按钮以帮助片段XML,我有这样一个类: package com.cheesecake.clasi.facebooklogin; import android.app.Fragment; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.LayoutInflater; import a

我正在尝试使用一个按钮来登录Facebook,我正在添加我的Facebook按钮以帮助片段XML,我有这样一个类:

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.setFragmentthis时,它需要一个片段,它显示一个错误:

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只是一个名字

即使不看我上面的评论,问题是你的片段是android.app.Fragment;将其从支持库android.support.v4.app.Fragment中更改为一个。

即使没有在上面查找我的评论,问题是您的片段是android.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));

或者,您可以对本机片段使用包装器:

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));

创建片段不是强制性的,您可以直接在“活动”中执行,并且在代码中根本不使用此按钮,除非您需要自定义行为。创建片段不是强制性的,您可以直接在“活动”中执行,并且在代码中根本不使用此按钮,除非您需要自定义行为。您在那里得到的Nice hack,工作得很有魅力+1我的问题是我正在使用AccountAuthenticatorActivity,而该活动中没有supportFragmentManager。因此,要么我必须破解活动,要么我必须破解登录按钮。你的破解很好,效果很好+1我的问题是我正在使用AccountAuthenticatorActivity,而该活动中没有supportFragmentManager。因此,要么我必须破解活动,要么我必须破解登录按钮。