android edittext 点击两次,关于android:在EditText上输入键两次击中onKey

我已将OnKeyListener附加到EditText。 我已经覆盖了onKey处理程序以捕获KeyEvent。

当用户按下回车键(使用仿真器时其计算机的回车键,或电话上带有硬件键盘的硬件的回车键)时,onKey处理程序将执行两次。 这两个执行都具有keyCode 66。

为什么会这样呢?

我想要我的屏幕,以便当用户按下Enter键时,将执行搜索。 由于发生了什么,搜索不必要地进行了两次。

我的方法如下所示:

mFilter.setOnKeyListener(new View.OnKeyListener() {

public boolean onKey(View v, int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_ENTER) {

// perform search

return true;

}

return false;

}

});

AHHHH

我认为这是向上和向下键发生的吗?

大概。 检查KeyEvent,而不仅仅是代码。 Ive历史上发现HTC键盘有时会引发多个事件(有时用户会反复打滑并多次按" Enter"键),因此您可能希望将实例变量保留在侦听器中以仅跟踪何时执行操作 已被射击,因此您可以防止意外第二次射击。

好主意。 我认为,当搜索任务启动时,我会用几秒钟的计时器启动另一个任务,直到该线程结束,用户将无法再次按下Enter键。

不应将此答案标记为答案,请将以下(更有用的)答案之一标记为答案(Id建议Abduls)。 谢谢。

if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction()==0) {

多数民众赞成在"按下键",并生成,只要用户保持按下。

尝试这个:

mFilter.setOnKeyListener(new View.OnKeyListener() {

public boolean onKey(View v, int keyCode, KeyEvent event) {

if (event.getAction() == KeyEvent.ACTION_DOWN) {

if (keyCode == KeyEvent.KEYCODE_ENTER) {

// perform search

return true;

}

}

return false;

}

});

您可以这样过滤:

object.setOnKeyListener(new OnKeyListener() {

@Override

public boolean onKey(View v, int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) {

// do stuff

return true;

}

return false;

}

});

使用KeyEvent.ACTION_DOWN按下键时的同上

覆盖它对我有用。

我遇到了同样的问题,上面的答案对我有所帮助,但是我使用的是Xamarin.Android(c#),因此语法略有不同。这对我有用:

MyStringTextBox.KeyPressed += OnEnterKeyPressed;

protected void OnEnterKeyPressed(object sender, View.KeyEventArgs e)

{

if (e.KeyCode == Keycode.Enter && e.Event.Action == KeyEventActions.Up)

{

DoSomething(this, EventArgs.Empty);

}

else

{

e.Handled = false;

}

}

这样,仅在按下Enter键(向上)时才调用DoSomething(),因此将被触发一次。 在Xamarin.Android上工作并经过测试

我调试了,对我有用的是

editText.setOnKeyListener(View.OnKeyListener { view, i, keyEvent ->

if (i == KeyEvent.KEYCODE_ENTER && enterAsSend && (keyEvent.action == KeyEvent.ACTION_UP || keyEvent.action == KeyEvent.ACTION_DOWN)) {

//Do stuff

}

return@OnKeyListener true

}

false

})

并为您的Editext检出android:inputType="textNoSuggestions",因为单击Enter键会给我们字典中的建议。

KeyEvent.ACTION_DOWN和KeyEvent.ACTION_UP引发此事件。

我已经完成调试,最后我意识到我从未使用过一个名为KeyEvent event的参数,然后检查并发现了问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值