Android 将此代码放在点击式侦听器中是否更合适?

Android 将此代码放在点击式侦听器中是否更合适?,android,facebook,android-fragments,Android,Facebook,Android Fragments,这是启动facebook登录的源代码。(全部在主活动中,特别是在主活动的oncreate中) 我的问题是,在登录按钮的onclicklistener中调用openActiveSession是否有效。在活动初始化时启动facebook登录过程对我来说没有意义。是的,在onclicklistener中为登录按钮调用openActiveSession是有效的,但我为您提供了更好的方法。它在下面 在按钮单击事件中使用此代码 因为如果你调用openActiveSession,每次都会打开facebook登

这是启动facebook登录的源代码。(全部在主活动中,特别是在主活动的oncreate中)


我的问题是,在登录按钮的onclicklistener中调用openActiveSession是否有效。在活动初始化时启动facebook登录过程对我来说没有意义。

是的,在onclicklistener中为登录按钮调用openActiveSession是有效的,但我为您提供了更好的方法。它在下面 在按钮单击事件中使用此代码

因为如果你调用openActiveSession,每次都会打开facebook登录对话框。但是,如果我们想检查用户是否已经登录,请使用以下方法

private void onClickFbLogin() {
    Session session = Session.getActiveSession();
    String[] permissions = { "email", "friends_birthday",
            "friends_location", "offline_access", "publish_stream",
            "user_photos", "publish_checkins", "photo_upload",
            "read_stream" };
    if (!session.isOpened() && !session.isClosed()) {
        session.openForPublish(new Session.OpenRequest(this).setCallback(
                statusCallback).setPermissions(permissions));

    } else {
        Session.openActiveSession(this, true, statusCallback);
    }
}

我也看了文件,但你为什么要测试!session.isopend()&!session.isClosed()?此方法是否在onclicklistener中,但它必须是公共的才能这样做?
private void onClickFbLogin() {
    Session session = Session.getActiveSession();
    String[] permissions = { "email", "friends_birthday",
            "friends_location", "offline_access", "publish_stream",
            "user_photos", "publish_checkins", "photo_upload",
            "read_stream" };
    if (!session.isOpened() && !session.isClosed()) {
        session.openForPublish(new Session.OpenRequest(this).setCallback(
                statusCallback).setPermissions(permissions));

    } else {
        Session.openActiveSession(this, true, statusCallback);
    }
}