Frage

Ich versuche, den Text eines zweiten EditText -Widgets mit dem Text aus dem ersten EditText -Widget nur dann zu füllen, wenn das zweite EditText -Widget Fokus erhält, das zweite Widget nicht leer ist und das erste Widget nicht leer ist.

Ich habe den folgenden Onfocuschangelistener -Handler -Code.

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

Wenn ich es ausführe und in das zweite Widget klicke, füllt es nicht. Wenn ich die dritte Einschränkung ('etxt.getText () .ToString (). Trim () == "' ') entfernen, funktioniert es. GetText () im zweiten EditText -Widget gibt also etwas zurück, obwohl das zweite Widget keinen anderen Wert hat als den Text, der über das Hinweisattribut angezeigt wird.

Wie kann ich das erreichen?

Vielen Dank

War es hilfreich?

Lösung

Sie sollten einen Objektvergleich verwenden String.equals(), nicht nur x == "".

Ich würde dies mit Androids Handy umschreiben TextUtils Klasse:

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

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

Andere Tipps

Vergleichen Sie niemals Saiten in Java mit == oder !=. Verwenden equals(). Versuchen Sie das und sehen Sie, ob Sie bessere Ergebnisse erzielen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top