So, hat etwas gedauert, aber nun bekommst du wenigstens mal eine erste Antwort. Bislang hatte ich mich vor Unittests noch gedrückt, wollte auf 'ne gute Gelegenheit warten um selber mal meine Apps zu testen. Danke für die Frage!
Es ist anscheinend so, dass bei lastname.getEditText().requestFocus(); kein wirklicher Focus gesetzt wird - es wird im Log auch kein Keyboard erwähnt, bei einer normalen Activity mit normalem EditText passiert das dagegen wunderbar.
Du kannst mit lastname.setText("h") den Wert setzen, aber ich hab es nicht geschafft, mit sendKeys irgendetwas in dem Feld unterzubringen.
Also erste Vermutung: Problem mit den Besonderheiten der Preferences - wie gesagt - bei einer normalen Activity hatte ich keine Probleme mit dem senden von Tastencodes.
Die Besonderheit wird auch deutlich, das du lastname.setText aufrufen kannst - obwohl das nicht der EditText sondern der EditTextPreference ist. Eigentlich würde ich erwarten, dass auch lastname.getEditText().setText() funktioniert, tuts aber nicht:
lastname.setText("aa");
lastname.EditText().setText("XYZ");
sendKeys("A B C");
sendRepeatedKeys(1,KeyEvent.KEYCODE_H);
Anschließend ist lastname.getText und preferences.getString(LASTNAME,"n/a") beides ganz brav "aa" - und das sollte es ja nicht sein. Und lastname.getEditText().getEditableText().toString() ergibt "XYZ" - da ist also ein Unterschied zwischen dem Inhalt der EditTextPreference und dem Inhalt des "zugehörigen" getEditText(). Und die Tastatureingaben sind schon mal gar nicht angekommen..
Sehr rätselhaft...
Und leider kennt EditTextPreference kein requestFocus() - das wäre sonst eigentlich der Weg, auf den man zuerst kommen würde.
Wer weiß mehr???