Pregunta

Estoy tratando de poblar el texto de un segundo widget de EditarTexto con el texto del primer widget EditarTexto sólo cuando el segundo widget de EditarTexto recibe el foco, la segunda Reproductor no está vacío, y el primer widget no está vacío.

Tengo el siguiente código de controlador de OnFocusChangeListener.

        public void onFocusChange(View v, boolean hasFocus) {

        EditText stxt = (EditText) findViewById(R.id.numberone);
        EditText etxt = (EditText) findViewById(R.id.numbertwo);


        if (hasFocus && stxt.getText().toString().trim() != "" && etxt.getText ().toString().trim() == "")
        {
            etxt.setText(stxt.getText().toString().trim());
        }
    }

Cuando corro y haga clic en el segundo widget de que no llena. Cuando quito la tercera restricción ( 'etxt.getText () .toString (). Trim () == ""')) funciona. por lo getText () en el segundo widget de EditarTexto está devolviendo algo a pesar de que el segundo widget tiene ningún valor inicial de otros entonces el texto que se muestra a través del atributo indirecta.

¿Cómo puedo lograr esto.

Gracias

¿Fue útil?

Solución

Se debe hacer una comparación de objetos utilizando String.equals(), no sólo x == "".

Me gustaría volver a escribir esto usando la mano clase TextUtils :

String one = stxt.getText().toString();
String two = etxt.getText().toString();

if (hasFocus && TextUtils.getTrimmedLength(one) != 0 
      && TextUtils.getTrimmedLength(two) == 0) {
    etxt.setText(one);
}

Otros consejos

Nunca comparar cadenas en Java con == o !=. Utilice equals(). Trate de eso y ver si le da mejores resultados.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top