onBackPressed 功能在 IMMERSIVE STICKY 模式下不起作用

2024-04-24

我正在使用沉浸模式进行带有 videoView 的活动。

我的目标是当触摸屏幕时,媒体控制器和系统控制栏一起显示或消失。现在一切正常。

问题是我无法正常离开活动。当我按一次后退按钮时,系统栏再次隐藏,什么也没有发生。我必须按两次才能退出活动。我不知道为什么。

这是我的代码。

我使用 FullScreenActivity() 活动来定义沉浸模式:

@TargetApi(Build.VERSION_CODES.KITKAT)
private void FullScreenActivity() {
        getWindow().getDecorView().setSystemUiVisibility(
                View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav                                                               // bar
                        | View.SYSTEM_UI_FLAG_FULLSCREEN// hide status bar;
                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
        }
}

在 OnCreate() 中:

@Override
protected void onCreate(Bundle savedInstanceState) {

    //getActionBar().setDisplayShowTitleEnabled(false);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

    FullScreenActivity();

在媒体控制器中,我再次定义了沉浸式模式,因为如果在控制器显示后不这样做,操作栏和系统栏将再次返回。

private class MyController extends MediaController {

    public MyController(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    public boolean onTouchEvent(MotionEvent event) {
        //........
    }

    @Override
    public void show() {
        super.show();
        FullScreenActivity();
    }

    @Override
    public void hide() {
        super.hide();
        FullScreenActivity();
    }

}

最后,在 onBackPressed() 中,我实现了我的函数:

@Override
public void onBackPressed() {
    Toast.makeText(getApplicationContext(), "onbackpressed", Toast.LENGTH_SHORT).show();
    super.onBackPressed();

    if (tgtIDArr != null && tgtIDArr.size() > 0) {
        new AlertDialog.Builder(this)
                .setIcon(android.R.drawable.ic_dialog_alert)
                .setTitle("Exit Player!")
                .setMessage("Are you sure you want to leave Player?")
                .setPositiveButton("Yes",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int which) {
                                .......
                                finish();
                            }
                        }).setNegativeButton("No", null).show();
    }else{
        ........            
        finish();
    }
}  

我不知道为什么,但只有当我按两次后退按钮时才会触发这个 onBackPressed() 函数。

有人知道为什么吗?谢谢!!


如果您想在按下后退按钮且媒体控制器可见时退出活动,则可以使用以下代码片段拦截后退按钮。

   @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        int keyCode = event.getKeyCode();
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            finish();
            return true;
        }
        return super.dispatchKeyEvent(event);
    }

这是针对类似问题的相同解决方案后退按钮在媒体播放器中不起作用 https://stackoverflow.com/questions/23396736/back-button-not-working-in-media-player

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

onBackPressed 功能在 IMMERSIVE STICKY 模式下不起作用 的相关文章

  • Android上如何模拟后台Activity因内存不足而被系统杀死的过程?

    我正在处理 内存不足 不再有后台进程 问题 当这种情况发生时 我的活动处于后台并被杀死 我正在尝试保存并加载实例状态来解决它 但因为它并不是每次都会发生 在这种情况下我应该如何测试我的活动 Thanks 您可以通过 adb 强制进程终止 g
  • android中根据屏幕尺寸计算图像尺寸

    我正在尝试根据屏幕尺寸计算图像高度和宽度 我从后端获取 5 x 7 尺寸的图像 为了将像素乘以 72 进行转换 我有 360 X 504 尺寸的图像 对于 360 X 504 我的动态透明矩形区域将显示为 1 223 x 1 179 即 8
  • 如何在活动中的必填字段中显示 * 符号

    我需要在活动中的必填字段中显示 符号 你能建议我怎样才能做到这一点吗 任何帮助 将不胜感激 我想说 作为必填字段的标记不遵循本机 Android 主题 的组合setHint and setError对于 Android 应用程序来说看起来更
  • 更改卡片高度即更改 Jetpack 中与 Material 3 组合的卡片颜色

    我正在使用 Card 可组合项 我希望它的颜色为白色 但是当我向它添加一些高度时 它的颜色会更改为更像主要容器颜色 我看过文档 其中有一种称为高程覆盖的东西 但找不到说明如何使用它的示例 这是我的代码 Card modifier Modif
  • Android:如何使用后台线程?

    我开发了一个应用程序 它从互联网获取内容并相应地在设备的屏幕上显示它 该程序运行得很好 就是有点慢 加载并显示内容大约需要 3 4 秒 我想将获取内容并将其显示在后台线程中的所有代码放在一起 当程序执行这些功能时 我想显示一个进度对话框 你
  • 具有自定义源集的 Android Gradle 风格 - gradle 文件应该是什么样子?

    我有一个旧的 eclipse 项目 我已经转移到 android studio 并设置为使用flavor 它似乎工作得很好 直到我开始尝试在我的风格之间使用不同的 java 文件 我的项目设置是这样的 ProjectRoot acitonb
  • 如何向开发人员发送崩溃报告?

    我开发 Android 应用程序 但在某些情况下我的应用程序force close 如果出现以下情况 我如何向开发人员发送包含详细信息的电子邮件force close随时发生 The ACRA https github com ACRA a
  • 使用 Android Firebase 堆栈推送通知

    我开发了使用 Firebase 接收推送通知的 Android 应用程序 我的代码基于 Firebase Google 官方文档 https firebase google com docs cloud messaging android
  • 我想从 android 中服务器的视频 url 创建缩略图

    My code public static Bitmap retriveVideoFrameFromVideo String videoPath throws Throwable Bitmap bitmap null MediaMetada
  • Android:使 Dialog 周围的所有内容都比默认值更暗

    我有一个具有以下样式的自定义对话框 它显示了一个无边框对话框 后面的任何内容都会 稍微 变暗 我的设计师希望背后的一切都比 Android 的默认设置更暗 但不是完全黑色 有这样的设置吗 我能想到的唯一解决方法是使用全屏活动而不是对话框 只
  • 如何在 NumberPicker 中一次显示 3 个以上的值

    我正在创建一个数字选择器 如下图所示 但如果有可用空间 我想显示 3 个以上的值 该选择器有 20 个项目 并且有足够的空间来显示 3 个以上的值 这可以使用 NumberPicker 来完成吗 只需以编程方式设置numberPicker
  • 如何从android中的外部存储中获取所选文件的文件路径?

    我在选择文件的文件路径时遇到问题 我搜索了整个堆栈溢出 但问题没有解决 从设备中选择文件的代码如下所示 Intent intent new Intent Intent ACTION GET CONTENT intent setType in
  • Android 纹理仅显示纯色

    我正在尝试在四边形上显示单个纹理 我有一个可用的 VertexObject 它可以很好地绘制一个正方形 或任何几何对象 现在我尝试扩展它来处理纹理 但纹理不起作用 我只看到一种纯色的四边形 坐标数据位于 arrayList 中 the ve
  • 如何构建自定义摄像机应用程序?

    我正在尝试开发一个自定义摄像机录像机 当我的设备在 Activity 的 beginRecording 中执行 start MediaRecorder 方法时 应用程序崩溃 我不知道出了什么问题 因为我遵循谷歌API指南 http deve
  • Android Root 执行 su 带参数

    我在使用参数执行 su 时遇到问题 包含空格 我的 Command java 看起来像这样 public class Command Process process public String executeCommand String c
  • 剪切评级栏中的图像

    我制作了自己的评级栏 花朵图像有 4 种尺寸 xdpi hdpi 等 从 24px24px 到 64x64px
  • 如何关闭 EditText 中的建议?

    如何在 Android 中关闭 EditText 中的建议 android inputType textNoSuggestions 根据this http comments gmane org gmane comp handhelds an
  • 无法使用文件提供程序从内部存储打开 PDF 以便在 Android 8 和 9 上查看

    仅适用于 Android 8 和 9 我这里有一个 PDF 文件管理器 String url file storage emulated 0 Android data com verna poc files Download mypdf p
  • 在android中创建SQLite数据库

    我想在我的应用程序中创建一个 SQLite 数据库 其中包含三个表 我将向表中添加数据并稍后使用它们 但我喜欢保留数据库 就好像第一次安装应用程序时它会检查数据库是否存在 如果存在则更新它 否则如果不存在则创建一个新数据库 此外 我正在制作
  • 如何正确编写AttributeSet的XML?

    我想创建一个面板适用于 Android 平台的其他小部件 http code google com p android misc widgets 在运行时 XmlPullParser parser getResources getXml R

随机推荐

  • 如何在实体框架代码优先中设置 0..* 关系?

    我有两个类的下一个代码 public class Object public int ObjectID get set public int Object2ID get set public virtual Object2 Object2
  • MediaButtonIntentReceiver 在 Android 4.0+ 中不工作

    目标是拦截来自耳机以及蓝牙的广播 以响应来自耳机的不同类型的点击来改变媒体播放器 该解决方案适用于 ICS 之前的所有版本 这是我尝试过的一些代码和事情 private BroadcastReceiver mediaButtonReceiv
  • Wicket、页面堆栈和内存使用情况

    Wicket 应用程序序列化并缓存所有页面以支持有状态组件 以及支持后退按钮 以及其他可能的原因 我有一个使用 setResponsePage 在屏幕之间导航的应用程序 在很短的时间内 会话就会变得相当大 因为所有先前的页面都存储在会话中
  • 如何在 IIS 7.5 中启用 GZIP 压缩

    我想使用 GZIP 压缩我的文件 您能分享一下使用 GZIP 压缩文件的 web config 代码吗 上传 web config 文件后还需要做什么吗 GZip 压缩可以直接通过 IIS 启用 首先 打开IIS 转到您希望调整的网站并点击
  • 在 Docker 中使用私有模块构建 Go 应用程序

    我正在尝试在依赖于私有子模块的 docker 容器中构建一个 go 项目 我本来希望 mount type ssh会将我的 ssh 凭据传递给容器并且它会起作用 目前我可以在本地构建 只需制作GOPRIVATE变量集和git config
  • 从代码中获取全局色调颜色

    有没有办法通过代码从我的项目中获取全局色调颜色 为了避免误解 我指的是全局色调 我可以在文件检查器中设置它 Easy 目标C UIColor tintColor self view tintColor Swift let tintColor
  • 根据其他数据框的函数创建新的数据框

    我是 R 的新手 所以我可能很难提出我的问题 请多多包涵 我有两个数据框 为了解释起见 我们假设 df1 柱形代表收益类型 玉米 燕麦 小麦等 行代表一年中的月份 一月 二月等 Elements 代表在该特定月份购买的增益类型的每吨价格 d
  • 从Sql服务器中选择表并将数据插入到Mysql表中

    我有一个正在运行的 ms sql 服务器 并且希望将一些数据复制到 mysql 数据库 我已经可以连接到它们 所以我做了类似的事情 pdo new PDO SQLSERVER user password sql SELECT id name
  • 在 swift 中使用 UUID() 和 json

    我在网上找到了在 json 文件中使用硬编码 uuid 的示例 并且这些示例非常适合我 但是当我在应用程序中添加从 json 数组中删除项目的功能时 我需要动态创建这些 uuid 这是我的json文件 list json 它曾经有硬编码的i
  • Objective-C 中的二叉树

    我正在学习算法和数据结构 并尝试使用 Objective C 设计和实现二叉树进行训练 到目前为止 我有以下课程 main 供测试用 Node 树的节点 BinaryTree 对于与树相关的所有方法 最早的方法之一BinaryTree我实现
  • 创建一个过程来检索表上的所有索引并重建

    我想创建一个过程来检索表上的所有索引并重建 我用这个查询检索所有索引 select index name from user indexes where table name your table name 我用这个查询重建 alter i
  • 以编程方式获取导航栏的高度

    我知道更多视图控制器 导航栏 的存在将 UIView 的高度推低 我也知道这个高度 44px 我还发现这种下推可以维持 self view frame origin y 0 那么 除了将其设置为常量之外 如何确定该导航栏的高度呢 或者 更短
  • Java 堆转储是否包括线程堆栈

    我一直在使用 Eclipse 内存分析工具来检查堆转储 我还没有看到任何对象通过线程堆栈中的局部变量保持活动状态的情况 java线程堆栈是否保留在堆转储中 如果不是 这些对象是否会被视为转储中无法访问的对象 如果是这样 是否有任何方法可以保
  • C# 位图/图形内存不足

    我正在尝试拍摄整个屏幕的快照以读取像素值 事实上我这样做没有任何问题 但在 214 个快照之后 我出现了内存不足的异常 Bitmap ScreenShot new Bitmap Screen PrimaryScreen Bounds Wid
  • 从 C# Windows 窗体在 MS Word 中打开 MS Word 文档

    我希望能够通过单击表单上的按钮 从 C 表单中打开 MS Word 中已制作的 Word 文档 但不知道如何操作 请帮忙 Thanks 上次我使用 Excel 时 我使用以下代码打开它 Process Start FileLocation
  • 使用ExternalContext.redirect()将面孔消息添加到重定向页面

    我在用ExternalContext redirect String 将用户重定向到另一个页面的方法 FacesContext getCurrentInstance addMessage new FacesMessage Bla bla b
  • java.lang.NoClassDefFoundError:无法解析:Landroid/webkit/PacProcessor

    实在找不到言语 我的项目只是一天天都无法编译 这就是我所做的 我下载并显示一个 PDF 然后将其作为保存的 PDF 打印到设备上 然后崩溃了 这是崩溃的情况 at java lang Class java lang Class classF
  • 将预处理器宏添加到 xcode 6 中的目标

    也许这非常简单 但我找不到在 Xcode 6 中为目标定义预处理器宏的方法 我已经做了一个屏幕截图来显示它在 Xcode 中的位置 因为它更容易 选择项目文件 选择您想要的目标 转到构建设置 搜索 预处理器 添加用于调试 发布或两者的预处理
  • Apache Spark:在分区上并行应用 sklearn 的函数

    我是大数据和 Apache Spark 的新手 也是一名在导师指导下工作的本科生 是否可以将函数 即样条曲线 仅应用于 RDD 的分区 我正在尝试实现论文中的一些工作here http sites stat psu edu rli rese
  • onBackPressed 功能在 IMMERSIVE STICKY 模式下不起作用

    我正在使用沉浸模式进行带有 videoView 的活动 我的目标是当触摸屏幕时 媒体控制器和系统控制栏一起显示或消失 现在一切正常 问题是我无法正常离开活动 当我按一次后退按钮时 系统栏再次隐藏 什么也没有发生 我必须按两次才能退出活动 我