我有2个EditText
(myEditText1
和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 request focus Change Focus to EditText Android
您可以在编辑文本上设置OnClickListener
,如下所示:
this.editText1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//your code
editText2.requestFocus();
}
});
只要注意一个特例 当EditText没有焦点时,不会调用onClick() 您可以在以下问题主题中找到此案例的详细信息 onClick event is not triggering | 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);