java - LoginButton 中的 setFragment 无法应用于 MainFragment

标签 java android facebook facebook-graph-api android-fragments

我正在开发 Android Facebook 登录,但遇到了问题。这是我的 MainFragment 类:

        public class MainFragment extends Fragment {

    private static final String TAG = "MainFragment";

    private UiLifecycleHelper uiHelper;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        uiHelper = new UiLifecycleHelper(getActivity(), callback);
        uiHelper.onCreate(savedInstanceState);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.main, container, false);

        LoginButton authButton = (LoginButton) view.findViewById(R.id.authButton);
        authButton.setFragment(this);

        return view;
    }


    private void onSessionStateChange(Session session, SessionState state, Exception exception) {
        if (state.isOpened()) {
            Log.i(TAG, "Logged in...");
        } else if (state.isClosed()) {
            Log.i(TAG, "Logged out...");
        }
    }

    private Session.StatusCallback callback = new Session.StatusCallback() {
        @Override
        public void call(Session session, SessionState state, Exception exception) {
            onSessionStateChange(session, state, exception);
        }
    };

    @Override
    public void onResume() {
        super.onResume();
        uiHelper.onResume();
    }

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

    @Override
    public void onPause() {
        super.onPause();
        uiHelper.onPause();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        uiHelper.onDestroy();
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        uiHelper.onSaveInstanceState(outState);
    }
}

这是我的 MainActivity 类:

public class MainActivity extends FragmentActivity {


    private MainFragment mainFragment;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

}

    public void startFacebookSession(View v) {
        Session.openActiveSession(this, true, new Session.StatusCallback() {

            // callback when session changes state
            @Override
            public void call(Session session, SessionState state, Exception exception) {
                if (session.isOpened()) {

                    Request.newMeRequest(session, new Request.GraphUserCallback() {

                        // callback after Graph API response with user object
                        @Override
                        public void onCompleted(GraphUser user, Response response) {
                            if (user != null) {
                                TextView welcome = (TextView) findViewById(R.id.LoginText);
                                welcome.setText("Hello " + user.getName() + "!");
                            }
                            else {
                                TextView view = (TextView) findViewById(R.id.LoginText);
                                view.setText("User logged out");
                            }
                        }
                    }).executeAsync();
                }
            }
        });
    }
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
    }
}

我经常在“(this)”上收到错误。错误说:

setFragment in LoginButton couldn't be applied to (com.example.app.MainFragment)*

最佳答案

有 2 个名为 Fragment 的类。普通 fragment 和 v4 fragment 。

进口差异:

import android.support.v4.app.Fragment;
import android.app.Fragment;

我很确定问题是 setFragment 方法需要其中一个,而您的 MainFragment 是从另一个扩展的。

关于java - LoginButton 中的 setFragment 无法应用于 MainFragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26403901/

相关文章:

java - 递归地将集合扫描到 map 中

java - 获取对象的类类型并在变量声明中使用它

facebook - 如何获得好友的时间?

ios - 使用 Phonegap 搜索和添加 Facebook 好友

ios - 创建一个像 Apple Signin 一样的 facebook 登录按钮

java - java中文本到图像的定位

java - 在 JavaFX 中逐像素生成图像,进度可见

Android Studio 互联网权限

android - 尝试使用 markushi circlebutton,屏幕上什么也没有出现?

android - 无法从 Android 中的 Mysql 数据库获取个人资料图片 url