Gestion focus sur un EditText
Bonjour,
Pour comprendre mon besoin :
*****************************
Mon application :
Stock disponible :80
Nouveau stock : 80-Valeur EditText
Nombre de sortie de stock : EditText
****************************
Je dois récupérer l'évenement sur les touches numériques du clavier, pour que des que la valeur du EditText change le nouveau stock (stock dispo - nombre sortie) soit mis a jour.
J'ai donc fait ce code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
final EditText sortie_value = (EditText)alertDialogView.findViewById(R.id.nb_entres);
//On ajoute un listener sur les champs texte pour lancer la recherche sur Enter
sortie_value.setOnKeyListener(new OnKeyListener() {
public boolean onKey(View v, int keyCode, KeyEvent event) {
int number_selected=0;
if (event.getAction()==KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_0){
number_selected=0;
}else if(event.getAction()==KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_1){
number_selected=1;
}else if(event.getAction()==KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_2){
number_selected=2;
}else if(event.getAction()==KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_3){
number_selected=3;
}else if(event.getAction()==KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_4){
number_selected=4;
}else if(event.getAction()==KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_5){
number_selected=5;
}else if(event.getAction()==KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_6){
number_selected=6;
}else if(event.getAction()==KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_7){
number_selected=7;
}else if(event.getAction()==KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_8){
number_selected=8;
}else if(event.getAction()==KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_9){
number_selected=9;
}
if (event.getAction()==KeyEvent.ACTION_DOWN){
sortie_value.setText(sortie_value.getText()+number_selected+"");
String intermediraire=sortie_value.getText().toString();
if(!intermediraire.equals("")){
new_qte=Integer.parseInt(intermediraire);
}else{
new_qte=0;
}
new_qte=Integer.parseInt(iNbQteSortie)-new_qte;
new_quantite.setText(new_qte+"");
return true;
}
return false;
}
}); |
Tout cela marche correctement, j'ai le résultat que je souhaite ! Seulement étant donné que c'est moi qui rajoute la valeur dans le EditText je perd le focus et il revient au début. Or je voudrais qu'il reste a la fin
J'espère avoir été le plus clair possible même si c'est pas évident !
****************************
EDIT
****************************
Pour faire plus simple, comment éviter le retour du focus d'un EditText au début du champs (et donc le mettre a la fin) après avoir forcer la valeur avec la methode setText("1");