Запрос фокуса на EditText после касания другого EditText? - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть 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
Изменить фокус на EditText Android

Ответы [ 4 ]

0 голосов
/ 14 февраля 2019

вы можете попробовать это

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

и использовать как,

requestFocus(myEditText2);
0 голосов
/ 14 февраля 2019

Вы можете установить OnClickListener для вашего текста редактирования следующим образом:

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

Просто позаботьтесь о особом случае
onClick () невызывается, когда EditText не имеет фокуса
И подробности этого случая можно найти в следующей ветке вопросов
Событие onClick не вызывает |Android

0 голосов
/ 14 февраля 2019

Я бы порекомендовал использовать 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();
            }
        }
     });
0 голосов
/ 14 февраля 2019

Это может быть из-за клавиатуры.Вы можете попробовать

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

Это работает для меня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...