在Facebook对话框中单击关闭(交叉)按钮时未调用onCancel()方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Facebook对话框中单击关闭(交叉)按钮时未调用onCancel()方法相关的知识,希望对你有一定的参考价值。

我正在按照教程登录Facebook http://www.androidhive.info/2012/03/android-facebook-connect-tutorial/。我已成功登录facebook。但是现在我在按下facebook对话框中的十字按钮时没有调用我的onCancel()方法。

这是我的代码。

public void loginToFacebook() {
    mPrefs = getPreferences(MODE_PRIVATE);
    String access_token = mPrefs.getString("access_token", null);
    long expires = mPrefs.getLong("access_expires", 0);

    if (access_token != null) {
        facebook.setAccessToken(access_token);
    }

    if (expires != 0) {
        facebook.setAccessExpires(expires);
    }

    if (!facebook.isSessionValid()) {
        facebook.authorize(this,
                new String[] { "email", "publish_stream" },
                new DialogListener() {

                    @Override
                    public void onCancel() {
                        // Function to handle cancel event

                        Toast.makeText(context, "Canceld",
                                Toast.LENGTH_SHORT).show();

                    }

                    @Override
                    public void onComplete(Bundle values) {
                        // Function to handle complete event
                        // Edit Preferences and update facebook acess_token
                        SharedPreferences.Editor editor = mPrefs.edit();
                        editor.putString("access_token",
                                facebook.getAccessToken());
                        editor.putLong("access_expires",
                                facebook.getAccessExpires());
                        editor.commit();

                        Log.i("onComplete", "Log");

                    }

                    @Override
                    public void onError(DialogError error) {
                        // Function to handle error
                        Log.i("onError", "Log");
                    }

                    @Override
                    public void onFacebookError(FacebookError fberror) {
                        // Function to handle Facebook errors

                        Log.i("FB Error", "Log");

                    }

                });
    }

我测试过它没有在onCancel()方法中显示我的吐司。

答案

尝试onDismiss(DialogInterface对话框){},通常,当作业完成并从屏幕上删除时,对话框将被取消。当用户想要转义对话框并按下“返回”按钮时,将取消对话框

以上是关于在Facebook对话框中单击关闭(交叉)按钮时未调用onCancel()方法的主要内容,如果未能解决你的问题,请参考以下文章

Android - 单击按钮时未显示权限对话框

在 Android 中单击 Facebook 登录按钮后未显示 Facebook 身份验证对话框

单击时未播放 Vimeo 嵌入视频 [关闭]

使用子组件按钮单击关闭 Kendo Angular Dialog

如何阻止我的模态对话框在按钮单击时关闭?

单击右上角的关闭(x)按钮后,DOJO 对话框未第二次打开