versiones para jelly descargar bean android performance android-4.2-jelly-bean

para - jelly bean android



requestFocus para TextView en Jelly Bean lento (1)

Estoy desarrollando una aplicación que tiene 4 campos de texto para ingresar datos y me he encontrado con un problema de rendimiento al mover el enfoque de uno a otro. Cuando un campo tiene un carácter ingresado, uso addTextChangedListener para monitorear el texto y mover el foco al siguiente campo de texto. Esto funcionaba bien en las versiones de Android antes de 4.1.1, pero desde la prueba en 4.1.1, hay un retraso notable al presionar una tecla antes de que aparezca el foco en el siguiente campo. Esto significa que si el usuario escribe rápidamente, las pulsaciones de teclas se pueden perder.

Tengo una aplicación simple usando el siguiente código

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); one = (EditText)findViewById(R.id.editText1); two = (EditText)findViewById(R.id.editText2); one.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) { two.requestFocus(); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub } }); }

Eso pone de relieve el problema. Cuando se ejecuta en un dispositivo basado en 4.0.4, todo está bien, pero en 4.1.1 se tarda un poco en mover el foco.

He probado esto en 2 diferentes Samsung Galaxy s3 uno con 4.0.4 y uno con 4.1.1.

¿Alguien más ha visto esto?

Muchas gracias

Pablo


No sé si hay una solución para ese problema ... pero podría tener un "truco" que ofrezca una solución alternativa mientras exista el problema:

  1. Ponga un EditText fuera de la pantalla. (Normalmente lo configuro a la derecha del margen derecho con un RelativeLayout).

  2. Establezca onTouchListener en su EditText visible (y configure el EditText para que no se pueda hacer clic). El onTouchListener debe centrarse en el EditText oculto.

  3. En el EditText oculto, configure un addTextChangedListener que, para cada carácter agregado o eliminado, realice los cambios adecuados en los EditTexts visibles.

Ejemplo:

Si tengo 4 EditTexts para PIN con ID: A , B , C y D y un EditText fuera de la pantalla con el id hidden :

Cada vez que recibo el primer carácter en hidden escribo A

Cada vez que recibo el segundo char en hidden escribo B

Cada vez que recibo una eliminación en el segundo carácter de hidden , elimino en B

...

Estoy haciendo algo similar en una de mis aplicaciones, sin problemas.