0

我有一个edittext和一个按钮。我希望在edittext中按下键盘上的输入/回车时调用按钮onclick处理程序。

xml布局:

   <EditText android:id="@+id/input"
    android:layout_weight="1"
    android:layout_width="0dp"
    android:maxLength="1"        
    android:layout_height="wrap_content"
    android:hint="@string/enter" />

    <Button 
    style="?android:attr/buttonStyleSmall"         
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send" 
    android:onClick="handler"/>        

处理程序如下所示:

public void handler(View view){
//handles buttonclick here    
    }

我已阅读有关堆栈溢出的其他答案,但没有一个解决方案对我有用,因为可能我做错了什么。有人可以用代码告诉我在edittext中按下ENTER键时如何调用处理程序吗?

我运行代码的设备是带有 Honeycomb 的 Acer Iconia A501Tablet。

这是完整的 java 文件 http://pastebin.com/tbTTu7T7

4

3 回答 3

1
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (event.getAction() == KeyEvent.ACTION_DOWN) {
        switch (keyCode) {
        case KeyEvent.KEYCODE_ENTER:
            /// call click event here by passing view
            //or u can write code which u want to be called onclick
            return true;
        }
    }
    return super.onKeyDown(keyCode, event);
}
于 2013-08-17T10:23:07.310 回答
1

试试这个..

  @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
    switch (keyCode) {
    case KeyEvent.KEYCODE_ENTER:
       button.performClick();
        return true;
    }
  }
  return super.onKeyDown(keyCode, event);
}
于 2013-08-17T10:24:40.647 回答
0

这行得通

  @Override
  public boolean onKeyUp(int keyCode, KeyEvent event) {

      switch (keyCode) {
      case KeyEvent.KEYCODE_ENTER:
          button.performClick();
          return true;
      default:
          return super.onKeyUp(keyCode, event);
      }


  }
于 2013-08-17T13:09:02.470 回答