【问题标题】:OnBackPressed doesn't work when observe EditText KEys观察 EditText 键时 OnBackPressed 不起作用
【发布时间】:2018-08-30 13:47:56
【问题描述】:

我有 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())) }
}

【问题讨论】:

    标签: android kotlin rx-android rx-kotlin rx-binding


    【解决方案1】:

    只听 keydown 事件。这应该在它被交给你的 UI 元素之前触发。 super 会将其传递给父级以进行正常流程。我不记得它是返回true还是false,但我认为handled是true。

        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) 
       {
            if ((keyCode == KeyEvent.KEYCODE_BACK)) 
            {
                onBackPressed();
                return true; 
            }
            return super.onKeyDown(keyCode, event);
       }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 2011-04-03
      相关资源
      最近更新 更多