在触摸了另一个EditText后请求焦点到EditText?

问题描述 投票:1回答:4

我有2个EditTextmyEditText1myEditText2) 当触摸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

java android android-edittext ontouchlistener
4个回答
3
投票

您可以在编辑文本上设置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


2
投票

我建议使用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();
            }
        }
     });

1
投票

这可能是因为键盘。你可以试试

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

这适合我


1
投票

你可以试试这个

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

并使用像,

requestFocus(myEditText2);
© www.soinside.com 2019 - 2024. All rights reserved.