1
votes

Demander le focus à un EditText après qu'un autre EditText a été touché?

J'ai 2 EditText ( myEditText1 et myEditText2 )
Et j'ai besoin de toucher myEditText1
1. Faites des affaires [Aucun problème ici et les affaires requises ont été appliquées]
2. Ensuite, demandez le focus sur myEditText2 [Pas de chance? ]

myEditText2.requestFocus();

J'essaye des solutions comme suivre les essais
Mais pas de chance et concentrez-vous toujours sur myEditText1

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;
    }
});

Questions connexes
Focus de la requête EditText
Changer le focus pour EditText Android


2 commentaires

Essayez également de supprimer le focus de la modification de texte1


vous pouvez également essayer ceci myEditText1.setImeOptions (EditorInfo.IME_ACTION_NEXT);


4 Réponses :


1
votes

Cela peut être dû au clavier. Vous pouvez essayer

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

Cela fonctionne pour moi


0 commentaires

3
votes

Vous pouvez définir un OnClickListener sur votre texte d'édition comme ceci:

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

Faites simplement attention à un cas particulier
onClick () n'est pas appelé lorsque le EditText n'a pas le focus
Et vous pouvez trouver des détails sur ce cas dans le fil de questions suivant
L'événement onClick ne se déclenche pas | Android


0 commentaires

2
votes

Je recommanderais d'utiliser TextWatcher, plutôt que d'utiliser des conditions pour savoir quand votre entreprise est terminée

essayez ceci:

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 commentaires

1
votes

vous pouvez essayer ceci

requestFocus(myEditText2);

et utiliser comme,

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


0 commentaires