Android Facebook - 登录/退出对话框

时间:2014-06-20 10:43:18

标签: android android-dialog android-dialogfragment android-facebook

我成功实现了Facebook登录到我的Android应用程序。我面临的问题是,在我退出时,每当我点击退出按钮时,我想捕获点击“取消/退出”选项。我该怎么做呢?下面附有图片,以便更加清晰地说明。

Logout Page

enter image description here

如图所示,如何捕捉突出显示的红色圆圈中的点击次数? 下面附上我的登录/退出活动代码。谢谢你:))

View view = inflater.inflate(R.layout.splash, container, false);
    LoginButton authButton = (LoginButton) view
            .findViewById(R.id.login_button);
    authButton.setFragment(this);
    // Get more permissions
    authButton.setPublishPermissions(Arrays
            .asList("publish_actions,read_stream"));
    authButton.setFragment(getParentFragment());

2 个答案:

答案 0 :(得分:0)

我现在这篇文章很老了,但是......
我和你有同样的问题,我做的是:
(仅限于facebook sdk v2.0)

1.转到com.facebook.widget包;

2.打开文件 LoginButton.java ;

3.转到 public void onClick(查看v)内的第819行;
4.查看转发对话?我刚刚将代码编写如下:

AlertDialog.Builder builder = new AlertDialog.Builder(context);
                builder.setMessage(message)
                       .setCancelable(true)
                       .setPositiveButton(logout, new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface dialog, int which) {
                               openSession.closeAndClearTokenInformation();
                           }
                       });
                       /*.setNegativeButton(cancel, null);*/
                builder.create().show();

它完成了!对话框上没有恼人的取消按钮 (您也可以删除整个对话框)

答案 1 :(得分:0)

我遇到了同样的问题并搜索了许多答案,但是它们没有用,所以我只是在facebook sdk的LoginButton.java中写了一些新的代码,我的第一步:

public interface LogoutListener{
    public void afterLogin();
}

private LogoutListener mLoginoutListener;

public void setLogoutListener(LogoutListener loginoutListener){
    this.mLoginoutListener = loginoutListener;
}

第二步:在LoginButton.java中找到811行,你会看到如下代码:

private class LoginClickListener implements OnClickListener {

    @Override
    public void onClick(View v) {
        Context context = getContext();
        final Session openSession = sessionTracker.getOpenSession();

        if (openSession != null) {
            // If the Session is currently open, it must mean we need to log out
            if (confirmLogout) {
                // Create a confirmation dialog
                String logout = getResources().getString(R.string.com_facebook_loginview_log_out_action);
                String cancel = getResources().getString(R.string.com_facebook_loginview_cancel_action);
                String message;
                if (user != null && user.getName() != null) {
                    message = String.format(getResources().getString(R.string.com_facebook_loginview_logged_in_as), user.getName());
                } else {
                    message = getResources().getString(R.string.com_facebook_loginview_logged_in_using_facebook);
                }
                AlertDialog.Builder builder = new AlertDialog.Builder(context);
                builder.setMessage(message)
                       .setCancelable(true)
                       .setPositiveButton(logout, new DialogInterface.OnClickListener() {
                           public void onClick(DialogInterface dialog, int which) {
                               openSession.closeAndClearTokenInformation();

                               // here is what I added
                               if(mLoginoutListener != null){
                                   mLoginoutListener.afterLogin();
                               }


                           }
                       })
                       .setNegativeButton(cancel, null);
                builder.create().show();
            } else {
                openSession.closeAndClearTokenInformation();
            }

第三步,这就是我的使用方法:

LoginButton floginButton = (LoginButton)findViewById(R.id.flogin_button);
        floginButton.setLogoutListener(new LogoutListener() {
            @Override
            public void afterLogin() {
                // do what you want ,when user click the "OK" button.

            }
        });

我在facebook sdk中更改了一些代码,它对我有用,我希望这可以帮到你。