触摸了另一个EditText后,请求将重点放在EditText上



我有2个 EditTextmyEditText1 and myEditText2
我需要触摸myEditText1
1.做一些业务[在这里没问题,需要应用业务]
2. 然后请求将重点集中到myEditText2 [没有运气吗?]

final EditText myEditText1 = (EditText) findViewById(R.id.myEditText1);
final EditText myEditText2 = (EditText) findViewById(R.id.myEditText2);
// ...
myEditText1.setOnTouchListener(new View.OnTouchListener()
{
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // My business when myEditText1 touched [ OK ]
        // ...
        // TODO
        // Need to request focus to another EditText myEditText2 ?
        return false;
    }
});

我尝试一些解决方案,例如遵循试验
但是没有运气,仍然专注于myEditText1

myEditText2.requestFocus();

相关问题
EditText请求焦点
将重点更改为Edittext Android

您可以在编辑文本上设置OnClickListener

this.editText1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //your code
                editText2.requestFocus();
            }
});

只要注意特殊情况
当EditText没有焦点
时, onclick()不会调用您可以在以下问题线程中找到此情况的详细信息
OnClick事件没有触发|Android

我建议使用textwatcher,而不是使用条件来知道何时完成业务

尝试以下操作:

myEditText1.addTextChangedListener(new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
        }
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
        }
        @Override
        public void afterTextChanged(Editable s) {
            if(myEditText1.getText().length() > 3){
                myEditText2.requestFocus();
            }
        }
     });

可能是因为键盘。您可以尝试

myEditText2.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(myEditText2, InputMethodManager.SHOW_IMPLICIT);

这对我有用

您可以尝试此

public void requestFocus(View view) {
    if (view.requestFocus()) {
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
    }
}

并使用,

requestFocus(myEditText2);

最新更新