android - 观察 EditText 键时 OnBackPressed 不起作用
问题描述
我有 EditText 的扩展,我正在监听来自 EditText 键盘的事件。我需要知道用户何时按下任何按钮以显示(或不显示)错误。所以我为键(rxbinding2)设置了 Observable 并且我得到了任何按下但是当我按下后退按钮和光标仍然在这个 EditText 方法中时 onBackPressed 不起作用。如何过滤onBack按下?
fun EditText.changeWithFormatting(formatter: (String) -> String): Observable<String> {
return Observable.merge(
afterTextChangeEvents()
.map { editableText },
keys()
.filter { it.action == KeyEvent.ACTION_UP }
.map { editableText }
)
.map { changeText(formatter(it.toString())) }
}
解决方案
只听keydown事件。这应该在它被交给你的 UI 元素之前触发。super 会将其传递给父级以进行正常流程。我不记得它是返回真还是假,但我认为处理后是真的。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
onBackPressed();
return true;
}
return super.onKeyDown(keyCode, event);
}
推荐阅读
- python - 通过“n”生成网格/嵌套列表“n”
- matlab - LaTeX 解释器,但 Matlab 图形上的无衬线字体
- php - Laravel Nova 和 Dingo API 路由冲突
- java - 多用户 Java 应用程序如何真正工作
- ruby-on-rails - 为什么 Rails 不更新“has_one”参考?
- java - 在 Java 中使用自定义字体创建按钮会导致按钮具有奇怪的形状
- java - 是什么让 dir 成为 Eclipse 中的项目?
- python - 如何将日志记录“标签”添加到堆栈驱动程序
- c++ - 时间:2018-10-10 标签:c++boostsocketproxy-server add SSL
- node.js - 在 Sequelize 迁移中创建关联