Facebook 对话框和后退按钮

标签 facebook dialog back-button facebook-android-sdk

当使用 facebook android sdk 打开对话框时,一切正常。

但是,如果用户单击“后退”按钮,则对话框确实会关闭,但不会调用对话框监听器的 onCancel 方法(或任何其他方法)。

我搜索了此事,并在 github 上找到了来自 fb android sdk 的拉取请求:Calls Cancel on DialogListener when Dialog is Cancelled .

我拿了一部分并对其进行了一些修改以获得这个:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
        mWebView.stopLoading();
        dismiss();
        mListener.onCancel();
        return true;
    }

    return true;
}

我将它添加到 FbDialog 类中,这似乎确实有效。

我想知道为什么这不是 sdk 的一部分? 该 Pull 请求已有一年多的历史,最后一次响应大约 11 个月前。 为什么不将其添加到sdk源中?

由于这个解决方案正在工作,所以并不紧急,但我不喜欢修改 facebook sdk 的源代码,因为以后可能会出现问题(如果/当它们更新时)。

有什么想法吗?

最佳答案

您应该修改FbDialog类。 添加此行以设置无法使用 BACK 键取消对话框:

setCancelable(false);

或者添加这些行来处理 BACK 键单击:

@Override
public void onBackPressed() {
    mWebView.stopLoading();
    dismiss();
    mListener.onCancel();
}

关于Facebook 对话框和后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10277914/

相关文章:

mysql - 新添加到表中的字段被完全忽略

Android Seekbar 作为对话框

android - 查看是否安装了应用程序

android - 将 facebook 与我当前的登录系统集成移动应用程序欺骗?

javascript - 无法处理请求,因为模态对话框或警报处于事件状态

android - 按后退按钮转到 android 主页

jquery - PreRenderView 在浏览器返回后跳过按钮操作

javascript - 在使用 onPopState 和 pushState 时,我应该使用什么 js 来处理后退按钮点击

facebook graph api..获取 friend 的 friend

android - 通过对话框更改首选项