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