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" 只是名字。
即使不查找我上面的评论,问题是您的 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));
我正在尝试创建一个带有按钮的应用程序以登录 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" 只是名字。
即使不查找我上面的评论,问题是您的 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));