在Android中以编程方式选择EditText

时间:2013-12-09 14:27:52

标签: android focus android-edittext

我是Android新手,我无法以编程方式选择EditText。 我的情景。 我有很多EditText,但只有一个是启用的,我会称之为A。用户使用键盘在此EditText A中写入;当他完成写作时,启动一个识别A内文本的算法并将其放在右侧EditText中,例如B。在此之后,我需要清空A并设置焦点,将光标显示在A内并显示键盘。

我会尝试myET.requestFocus(),但没有任何反应。

如果用户不必触摸A,我怎样才能再次A进行编辑?

由于

2 个答案:

答案 0 :(得分:3)

为了在不按下TextEdit的情况下显示键盘,您必须将代码放在处理程序中并有一些延迟。它在200ms延迟时工作良好,但没有任何延迟或仅延迟1ms就失败了。

   (new Handler()).postDelayed(new Runnable() {

        public void run() {
            youEditText.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN , 0, 0, 0));
            youEditText.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0));                       

        }
        }, 200);

因此,通过此代码,您可以模拟EditText上的点击。 干杯

答案 1 :(得分:3)

final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
          @Override
          public void run() {
              myET.requestFocus();
          }
        }, 100);

试试这个