Java Android Studio无法识别Facebook按钮的碎片
我正在尝试使用一个按钮来登录Facebook,我正在添加我的Facebook按钮以帮助片段XML,我有这样一个类: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
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。因此,要么我必须破解活动,要么我必须破解登录按钮。