显示 PopupWindow 时未调用 onBackPressed

2024-04-14

嘿伙计们,

所以目前我正在使用 PopupWindow 来显示应用程序内浏览器。然而,当按下后退按钮时,它什么也不做。我在另一个片段中使用 PopupWindow,然后使用语句在 FragmentActivity 中设置 PopupWindow,然后当我按下后退按钮时,它应该检查 PopupWindow 是否已设置并关闭它。然而它甚至没有通过 onBackPressed 运行。

片段中的弹出窗口:

--> 是我指出确保 FragmentActivity 也获取 PopupWindow 的行的地方。

// Use webview for icons and website link.
public void inAppBrowser(String url){
    mCursor.moveToFirst();
    // Inflate View
    LayoutInflater layoutInflater = (LayoutInflater) ((MainActivity) MainActivity.getContext()).getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    final View inflatedView = layoutInflater.inflate(R.layout.browser_window, null, false);

    // Control View Childs.
    LinearLayout header = (LinearLayout) inflatedView.findViewById(R.id.filter_header);
    header.setBackgroundColor(Color.parseColor(color));
    Button cancel = (Button) inflatedView.findViewById(R.id.cancel);
    Button done = (Button) inflatedView.findViewById(R.id.done);

    // Set PopupWindow position.
    Display display = ((MainActivity) MainActivity.getContext()).getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);

    // Control PopupWindow.
    final PopupWindow popWindow = new PopupWindow(inflatedView, size.x, size.y, true);
    popWindow.setAnimationStyle(android.R.anim.fade_in);
    popWindow.setFocusable(true);
    popWindow.setOutsideTouchable(true);

    popWindow.showAtLocation(v, Gravity.BOTTOM, 0, 150);
    --> MainActivity.setPopupWindow(popWindow);

    // Control WebView
    WebView myWebView = (WebView) inflatedView.findViewById(R.id.webview);
    myWebView.setWebViewClient(new WebViewClientAdapter());
    myWebView.clearCache(true);
    myWebView.clearHistory();
    myWebView.getSettings().setJavaScriptEnabled(true);
    myWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    MainActivity.setWebView(myWebView);
    if (url != null) {
        if (url.contains("http://") || url.contains("https://")) {

        } else {
            url = "http://" + url;
        }
        myWebView.loadUrl(url);
    } else {
        popWindow.dismiss();
        MainActivity.setPopupWindow(null);
        MainActivity.setWebView(null);
    }

    cancel.setVisibility(View.INVISIBLE);
    done.setText("Close");

    done.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            popWindow.dismiss();
        }
    });
}

我的 onBackPressed 代码:

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    //check if popupwindow is open
    Log.e(TAG, "Check if it runs through this section");
    if (popWindow != null) {
        if (myWebView != null && myWebView.canGoBack()) {
            myWebView.goBack();
        } else {
            popWindow.dismiss();
            popWindow = null;
            myWebView = null;
        }
    }
}

暂时忽略 WebView。这可能是将来的一个问题,但我希望 PopupWindow 首先关闭。任何帮助表示赞赏。


使您的 PopupWindow 不可聚焦:

final PopupWindow popWindow = new PopupWindow(inflatedView, size.x, size.y, false);

还要删除这一行多余的:

popWindow.setFocusable(true);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

显示 PopupWindow 时未调用 onBackPressed 的相关文章

随机推荐

  • 模拟Android AssetManager

    我有一段代码接受 Context 并将该上下文传递给私有方法 私有方法调用 getAssets open 来读取我的应用程序的资产文件夹中存在的文件 public void methodA Context ctx throws IOExce
  • 将服务器端 MVC 与 Backbone.js 相结合

    我将 NET MVC 用于所有服务器端逻辑并提供初始页面 但我的应用程序在客户端非常繁重 因此我采用了 Backbone JS 事实证明它非常有用 但我不确定如何构建我的系统以整合这两种技术 在我看来 我有两个选择 在服务器端从 MVC 中
  • ios中如何将字节数组转换为图像

    今天我的任务是将字节数组转换为图像 首先 我尝试将图像转换为字节数组 为了将图像转换为字节数组 我们首先要做的就是转换该特定图像 UIImage to NSData 然后我们将其转换为NSData到字节数组 这里我将给出示例代码 只需浏览
  • 为什么enable_shared_from_this有一个非虚拟析构函数?

    我有一个宠物项目 我用它来试验 C 11 的新功能 虽然我有使用 C 的经验 但我对 C 还很陌生 为了训练自己采用最佳实践 除了大量阅读之外 我启用了一些严格的编译器参数 使用 GCC 4 4 1 std c 0x Werror Wall
  • Twig 中的 {{ exception.message }} 不渲染 HTML

    我有这个控制器在哪里 Exception被提出了 我还没弄清楚哪个SF2Exception尚未使用 在一定条件下 就这个
  • Django - 将参数传递给 CBV 装饰器的正确方法?

    文档功能应用装饰器的不错选择 例如login required基于类的视图 https docs djangoproject com en dev topics class based views intro decorating the
  • ANDROID CAMERA:获取参数失败(空参数)

    您好 我仅在棒棒糖以下的操作系统版本中遇到此问题 对此进行了大量搜索 但没有找到正确的解决方案 我认为问题出在操作系统版本上 它在 5 中工作正常 我的代码是 private void setCameraPhotoQuality Camer
  • 设置 li 标签内 的字体颜色

    我的标记如下所示 div class c1 li class c2 a href blah a li div 我希望文字 blah 是红色的 c1 在其他地方使用 所以我想在不影响其他标记的情况下尽可能深入 在您的 css 文件中使用此样式
  • C#:绘制自己的条形图

    我正在尝试通过绘制一个简单的条形图C 但我从未尝试过 Graphics 和 Drawing 命名空间 我想生成一个 开始 和 结束 图形 然后以某种方式重复图像 以显示 长度 但我不知道如何做到这一点 如果您能指出正确的方向和 或您有示例代
  • 尽管包含必需的标头,但仍出现“‘sockaddr_in’未声明(在此函数中首次使用)”错误

    include
  • 如何将列表转换为可枚举

    我的以下代码有问题 public IEnumerable
  • 为什么 php 脚本速度变慢?

    我正在编写迁移脚本 该脚本从一个 MySQL 数据库中选择数据并通过原则导入到另一个 MySQL 数据库中 问题是 在创建每个实体块之后 我的脚本速度就会变慢 导入前 100 篇文章大约需要 5 秒 接下来的 100 篇文章需要 7 秒 接
  • T-SQL 中的随机加权选择

    如何根据所有候选行的应用权重在 T SQL 中随机选择表行 例如 我在表中有一组行的权重分别为 50 25 和 25 加起来为 100 但不是必须的 我想随机选择其中一个 其统计结果相当于相应的行重量 Dane 的答案包括以引入平方律的方式
  • 使用 ionic zip 时压缩失败

    我正在使用最新版本的 ionic zip 版本 1 9 1 8 我已经设置了 ionic zip 的属性ParallelDeflateThreshold 0 过去两个月 压缩机制工作得很好 突然 它停止工作了 压缩线程挂起 ionic zi
  • bash 是否存在内存泄漏?

    我在跑bashv4 4 19 1 在 Ubuntu 18 10 上发布 如果我跑valgrind在一个简单的脚本上 或者甚至bash version 我发现我确实丢失了 12 个字节的内存 但仍然可以访问大约 46kB 的内存 仍然可访问的
  • 删除 Pig 输出中的括号和逗号

    目前我的输出如下 130 1 131 1 132 1 133 1 137 1 138 2 139 1 140 1 142 2 143 1 我想要这样 130 1 131 1 132 1 我的代码如下 A LOAD user links sm
  • xcode9 / SceneKit - .dae 文件未加载到 SCNScene 中 - 返回 nil

    我正在尝试使用以下代码将 dae 文件加载到 SCNScene 中 let solutionScene SCNScene named art scnassets level1 dae print solutionScene rootNode
  • 使用 numpy 对数组进行高效阈值过滤

    我需要过滤一个数组以删除低于某个阈值的元素 我当前的代码是这样的 threshold 5 a numpy array range 10 testing data b numpy array filter lambda x x gt thre
  • Android Wear 通过删除数据项在 Data Api 上删除数据

    我的问题很简单 如何从DataAPI中删除数据 我在路径 model model id 中有一些数据 想要删除 model 中的所有数据 我使用代码 uri new Uri Builder scheme PutDataRequest WEA
  • 显示 PopupWindow 时未调用 onBackPressed

    嘿伙计们 所以目前我正在使用 PopupWindow 来显示应用程序内浏览器 然而 当按下后退按钮时 它什么也不做 我在另一个片段中使用 PopupWindow 然后使用语句在 FragmentActivity 中设置 PopupWindo