当观察EditText时,OnBackPressed不起作用

时间:2018-08-30 13:47:56

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

我有EditText的扩展名,在这里我可以监听EditText键盘上的事件。我需要知道用户何时按下任何按钮来显示(或不显示)错误。所以我将Observable用作键(rxbinding2),并且可以按任意键,但是当我在此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())) }
}

1 个答案:

答案 0 :(得分:1)

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

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