Android提供的onKey()、OnKeyDown()和dispatchKeyEvent()方法之间的区别?

2024-03-24

Android提供的onKey()、OnKeyDown()和dispatchKeyEvent()方法有什么区别?
我想知道这些都可以在何时何地使用。
请对此进行一些说明。


追踪源代码5.1 视图类的源码 http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/view/View.java/。看来dispatchKeyEvent() http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/view/View.java/#View.dispatchKeyEvent%28android.view.KeyEvent%29是系统调用的第一个方法。重载它将阻止调用任何和所有关键事件,除非调用基本版本。

dispatchKeyEvent()的第一步是尝试将事件传递给onKeyListener http://developer.android.com/reference/android/view/View.OnKeyListener.html如果有的话。这是当onKey()叫做。如果onKey()实施回报true, dispatchKeyEvent()将返回那里并且其他事件将不会被调用。

如果没有onKeyListener or the onKeyListener's onKey()方法返回false, dispatchKeyEvent()然后会调用KeyEvent's dispatch() http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.1.1_r1/android/view/KeyEvent.java#KeyEvent.dispatch%28android.view.KeyEvent.Callback%2Candroid.view.KeyEvent.DispatcherState%2Cjava.lang.Object%29方法。然后将依次调用中的所有方法KeyEvent.Callback http://developer.android.com/reference/android/view/KeyEvent.Callback.html界面在您的视图中。这包括onKeyDown() http://developer.android.com/reference/android/view/View.html#onKeyDown%28int,%20android.view.KeyEvent%29 and onKeyUp() http://developer.android.com/reference/android/view/View.html#onKeyUp%28int,%20android.view.KeyEvent%29.

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

Android提供的onKey()、OnKeyDown()和dispatchKeyEvent()方法之间的区别? 的相关文章

  • 用于 Kotlin 中单元测试的 BuildConfigField 模拟

    我正在尝试尽可能多地涵盖Kotlin Android 库我遇到了有关自定义 BuildConfig 变量的问题 更广为人知的是buildConfigField 我想模拟这个变量来测试两者true and false values 从 Gra
  • 如何制作像 Google+ 应用程序中那样的气泡? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有谁知道如何使用 Google An
  • 通过代码在创建时突出显示 ListView 项目

    我想在创建 listView 时突出显示 ListView 的第一行 0 我尝试了不同的方法 就像您在注释代码中看到的那样 但没有任何效果 这很奇怪 因为 OnItemClickListener 中的突出显示工作正常 它通过 xml 选择器
  • 虚拟回调接口

    在 Eclipse 为您创建的来自 Google 的示例主从流代码中 片段中包含以下内容 private Callbacks mCallbacks sDummyCallbacks public interface Callbacks pub
  • 使用 proguard 混淆文件名

    我正在使用 proguard 和 Android Studio 混淆我的 apk 当我反编译我的apk时 我可以看到很多文件 例如aaa java aab java ETC 但我项目中的所有文件都有原始名称 有没有办法混淆我的项目的文件名
  • 如何在 Android 应用程序中隐藏 Flutterwave API 密钥

    我正在构建一个 Android 应用程序 目前正在将 Flutterwave 集成到我的应用程序中以进行支付 建议我永远不要将 Flutterwave API 密钥放在我的应用程序上 那么我该如何隐藏这些键呢 我正在使用 Retrofit
  • 无法在 Android Studio 中导出签名的 APK

    当我使用keytool list keystore path to keyfile jks并提供我的密码 我可以看到那里的条目 但是当我在尝试使用相同的密码生成签名的 APK 时使用相同的密码时 我收到错误 无法加载密钥库 密钥库被篡改 或
  • 如何使用 RecyclerView 创建此布局?

    我正在尝试使用这种类型的布局创建回收器视图 这些项目是字符串 可以以不同的大小出现 我不知道每行中有多少项目 我可以使用 StaggeredGridLayoutManager 来做到这一点吗 该图像只是一个假示例 每行可以有更多项目 您可能
  • 如何在Android中的DataBinding的ViewModel类中获取R.string

    我目前正在使用databinding对于我的 Android 应用程序项目 我想设置error留言在我的CustomTextView from R string txtOldPassWordError并从另一个名为的类中进行设置ViewMo
  • Android L,使用 joda.time 库的异常

    该应用程序适用于所有设备 包括 nexus 5 和 nexus 7 在 Android L 预览版上运行相同的应用程序时 应用程序崩溃了 我一直在调试 并且调用 DateTime 构造函数发现了异常 public static String
  • 在 Android 中加密/解密字符串的简单方法

    我的问题是如何加密String String AndroidId Override public void onCreate Bundle savedInstanceState super onCreate savedInstanceSta
  • 模拟器无法加载

    我正在使用 hello android 教程并通过 eclipse 创建 avd 启动模拟器时不使用图像 它只是显示一个黑色的后屏 中间有 ANDROID 字样 并且在 ANDROID 字样的末尾有一个闪烁的光标 我已按照 T 的步骤安装
  • Android 认为我没有关闭数据库!为什么?

    我有一个 SQLiteDatabase 数据成员 我在 onCreate 中初始化它 并在 onPause onStop 和 onDestroy 中调用 close 它在 onResume 中重新初始化 它似乎运行得很好 但当我查看调试器时
  • AndEngine MenuScene - 无法单击按钮

    我有一个关于 android 和 andengine 的小问题 这是我的主菜单的源代码 AbstractScene is extending Scene public class MainMenuScene extends Abstract
  • Android Google Map V2:如何在单击另一个标记时更改先前单击的标记的图标

    更新 我通过添加 previousMarker 对象解决了性能问题 因此 只有先前单击的标记将被删除并替换为默认图标 但是 当我单击标记时 信息窗口仍然不显示 我有一个地图视图并在上面设置了一些标记 我想要的是 当我单击一个标记时 它将其图
  • TextView.setMaxLines 不起作用?

    在我的应用程序中 我有一个屏幕 其中显示一些文本 然后显示一张照片 文本的长度是可变的 有时根本没有 有时很多 所以我想对其进行设置 以便文本永远不会占用超过几行 但可以滚动 为下面的图像留下足够的空间 我这部分的视图组件是以编程方式创建的
  • 了解应用程序在后台时何时收到 Firebase 消息

    我知道这个标题有同样的问题 但不幸的是它没有得到正确的回答 它被接受了 here https stackoverflow com questions 37711082 how to handle notification when app
  • TabLayout 的不同 tabMode

    我正在使用 ViewPager 和 TabLayout 如果选项卡可以放置在显示 tabMode 上 则它们必须是 app tabMode fixed else app tabMode scrollable 我怎样才能做到这一点 我不明白你
  • Android AppWidgetManager 方法 updateAppWidget 无法设置意图、加载数据。而且它是随机发生的

    我的小部件由 2 个按钮和一个显示数据的列表视图组成 大多数时候 当调用小部件提供程序的 onUpdate 方法时 一切都会正常加载 每个人都很高兴 但是我注意到有时在调用更新方法后 小部件完全无法加载其数据 列表视图为空 所有按钮均无响应
  • 如何用LoaderManager自动重新查询

    我有一个应用程序显示来自 SQLite DB 的数据 并且数据不断变化 所以显然 我认为我应该使用 LoaderManager 来显示数据 我读过一些关于将 LoaderManager 与 SQLite 结合使用的内容 然后看到了亚历克斯

随机推荐

  • 无法访问 Web 控件的 Page_Load 事件中的公共方法

    我想打电话给我的Public String Function 方法来自我的 ascx s Page Load事件 该函数和包含的类位于与 Web 控件相同的代码后面 但我无法访问该功能 我该如何解决这个问题 Example public c
  • 包含闭包的 swift 函数的空返回值

    我创建了一个函数 该函数应该返回一个字典 其中填充了在线检索的数据 使用 json 基于 Ray Wenderlich tut 该代码位于闭包中 问题是首先返回一个空字典 然后才填充它 不知道这是否与获取远程数据的延迟有关 但显然我需要在返
  • Clang-Tidy 找不到我的头文件

    这里是 clang 和 clang tidy 的新手 我有一个具有这种结构的项目 project build cmake component1 src someFile cpp someFile2 cpp someFile hpp some
  • grunt-terser 给出语法错误:“VARIABLE_NAME”被重新声明

    我在用着咕噜语 https www npmjs com package grunt terser缩小我的 es6 文件 我有两个文件 文件1 js 文件2 js 在这两个文件中 我需要一个具有相同变量名称的模块 如下所示 const VAR
  • 如何使用group-concat mysql创建json格式?

    如何使用group concat mysql创建json格式 我使用MySQL 示例1 table1 email name phone email protected cdn cgi l email protection Ben 65553
  • OS X 崩溃日志符号

    我无法使用 XCode 4 6 来符号化来自测试人员和用户的 OS X 不是 iOS 崩溃日志 崩溃日志无法拖到管理器中 并且管理器不会显示 Library Logs DiagnosticReports 中的任何崩溃日志 尽管某些日志位于该
  • Linux/Windows 中的 C/C++ 内存使用 API

    我想获取每个进程和系统范围的内存使用信息 在 Windows 中 这非常简单 GetProcessMemoryInfo 和 GlobalMemoryStatusEx 可以非常轻松地完成这些工作 例如 GetProcessMemoryInfo
  • 有没有人找到一种方法来合并 Xcode 项目或 Core Data 模型文件中的更改?

    有没有办法使用 VCS 我正在使用 git 并让它与 Xcode 文件合并 例如 如果我的同事向项目添加了一个新组 当我合并他的更改时 我会合并该组吗 或者 如果他向核心数据实体添加一个属性 我会在我的核心数据模型中获得该属性吗 核心数据和
  • 无法在 Android Studio 中解析符号 HttpGet、HttpClient、HttpResponce

    我只是复制所有的jar文件Http but Android Studio无法导入所有这些 jar 文件 它给出一个错误 Cannot resolve symbol HttpGet HttpClient HttpResponse My Act
  • 浮点精度显示(Android)

    我正在尝试制作一个程序 它接受一些用户输入 运行一些计算并输出答案 我的问题是 这个答案有时会长很多小数位 这会导致一些美观和布局问题 我只需要显示小数点后 4 位的数据 是否有办法在输出时限制这些数字的精度 数字存储在浮点数中 我正在为
  • 如何创建可滚动的结果集?

    我得到了这个简单的代码来从 MSSQL Server 2008 检索记录集 由于我设置了 ResultSet TYPE SCROLL INSENSITVE 该记录集必须是可滚动的 与 Javadocs 中的示例相同 String qry S
  • 带有私有标识符参数的符号

    我想创建一个与私有 MethodMirror 的简单名称相同的符号 但是 Symbol 的文档指出 new Symbol 的参数必须是有效的公共标识符 如果我尝试创建一个const Symbol privateIdentifier dart
  • Python 浮点除法不精确[重复]

    这个问题在这里已经有答案了 可能的重复 Python float str 浮动怪异 https stackoverflow com questions 1778368 python float str float weirdness Pyt
  • Redis CLI 未通过 Laravel 显示最近存储的密钥

    我正在尝试使用缓存我的结果redis in Laravel通过做这个 result Cache remember orders cache 10 function use orders return orders return result
  • 我有一个 contentEditable="true" 的 div,需要对输入的数字进行着色

    这是我的代码 非常适合为可编辑 div 中的数字着色 但光标将转到 div 的开头 当我按键盘箭头按钮遍历字符串时 以及当我单击 home 和 end 按钮 光标应该按预期移动 jQuery document ready function
  • 具有数据成员语法的零成本属性

    我 重新 发明了这种使用数据成员语法实现零成本属性的方法 我的意思是用户可以写 some struct some member var var some struct some member 并且这些成员访问以零开销重定向到成员函数 虽然初
  • 对话框中标题分隔符的样式

    我想知道如何摆脱 或更改颜色 对话框中的标题分隔符 它是蜂窝设备上显示的对话框标题下方的一条蓝线 我猜这是 SDK 中的相关布局 但由于没有样式属性 我不知道如何设置它的样式 如果我尝试使用 findViewById 则没有 android
  • 使用 HTTPoison 初始化模块属性

    我正在尝试像这样初始化模块属性 response HTTPoison get url ok response Poison decode response body attr response 我以前用一个文件做过这样的事情 externa
  • 转换给定时区的日期/时间 - java

    我想将此 GMT 时间戳转换为 GMT 13 2011 10 06 03 35 05 我尝试了大约 100 种不同的 DateFormat TimeZone Date GregorianCalendar 等组合来尝试完成这个非常基本的任务
  • Android提供的onKey()、OnKeyDown()和dispatchKeyEvent()方法之间的区别?

    Android提供的onKey OnKeyDown 和dispatchKeyEvent 方法有什么区别 我想知道这些都可以在何时何地使用 请对此进行一些说明 追踪源代码5 1 视图类的源码 http grepcode com file re