requestFocus funktioniert nicht korrekt bei EditText

Viel Zeit wurde damit verbracht, das problem zu lösen, und es sieht einfach aus, aber ich bin wirklich müde und konnte keine Lösung finden.
Ich habe eine Aktivität, die Tätigkeit hat 4 EditText Komponenten, 2 von Ihnen mit popup-Menü (AlertDialog) enthalten die Liste, nächste - die ist deaktiviert, um Sie zu Bearbeiten, und zuletzt - bearbeitet, und sollte zeigen, auf der soft-Tastatur, wenn der Benutzer darauf Tippen.

Auch, mein root LinearLayout hat LinearLayout enthalten, die innerhalb RelativeLayout. Die Letzte Notwendigkeit für AdvBanner. Letzte LinearLayout(RelativeLayout) ist ausgerichtet auf den Boden der root-layout.

Den Teil der XML-Beschreibung zu:

  <LinearLayout
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:layout_gravity="bottom"
      android:focusable="false"
      android:focusableInTouchMode="false" 
      android:gravity="bottom">
  <RelativeLayout 
      android:id="@+id/AdvLayoutReserveArea" 
      android:layout_width="fill_parent" 
      android:layout_height="50dp" 
      android:background="#FFFFFF"
      android:focusable="false"
      android:focusableInTouchMode="false" 
      android:gravity="bottom" /> 
  </LinearLayout>

Wenn Aktivität starten, editierbare EditText hat Fokus mit GRÜN Grenze und der cursor blinkt. Nach wenigen Sekunden, der AdvBanner geladen und angezeigt. Wenn es passiert, editierbare EditText Fokus verloren.. von diesem moment, mein Leben wie ein Alptraum.

Schauen wir uns Schritt für Schritt durch.

Problem 1.
Wenn in DIESEM MOMENT (bei Adv geladen und angezeigt wird) Benutzer bearbeitet ein EditText-Feld über die soft-Tastatur, Fokus verloren, Rand nehmen Sie einen GRAU Farbe, und wenn der Benutzer weiterhin die Eingabe ein text ist keine Ergebnis - Symbole werden nicht gedruckt (CURSOR in EditText ist auch verloren).

Ich DENKE, jeder user wird genervt - wenn Sie text eingeben, und der cursor inaktiv ist, weil im hintergrund einige adv geladen und es den Fokus für sich selbst.

Um dieses Problem zu lösen, in-Methode bei der Adv geladen ist (wird angezeigt) versuche ich wieder den Fokus manuell zu EditText durch die Methode requestFocus.

public void onAdLoaded() 
    {
//TODO Auto-generated method stub
//add app specific code for this event here...
//called when an ad is successfully displayed on device            
    CountEdit1.requestFocus();
}

Ja, der cursor zurückgegeben EditText Feld, und wenn soft-Tastatur aktiv ist, kann der Benutzer immer noch text eingeben, aber die Grenze des EditText-Feld bleiben GRAU...

HINWEIS: eigentlich bin ich nicht sicher über den Unterschied zwischen GRÜNEN und GRAUEN Grenze konzentriert EditText.. GRÜN ist in der Regel, wenn Benutzer Tippen Sie auf, und GRAU, wahrscheinlich, wenn wir wünschen, einen Fokus manuell (mithilfe von requestFocus() etc)

Problem 2. (Als Ergebnis der Solvatation Problem #1).
Nachdem der soft-Tastatur wurde geschlossen, wenn der Benutzer Tippen Sie auf Bearbeitbare EditText Feld, Fokus und der cursor erscheint im inneren, aber keine Reaktion zum anzeigen der soft-Tastatur wieder! Tippen Sie es nicht zeigen soft-Tastatur, aber die sieht aus wie die edit-Feld kopieren-Modus - wenn der user kann einen text auswählen und Ausschneiden/kopieren es in die Zwischenablage.

Mein Ziel ist es einfach für einen ersten Blick. Ich will einfach nur SPEICHERN Sie die cursor-und den Fokus auf editierbare EditText-Feld (CountEdit1), während die soft-Tastatur angezeigt wird und der Benutzer die Eingabe von text.
Und normale Reaktion, wenn der Benutzer Tippen auf EditText - wie in der Regel, nur zeigen Sie mir auf der soft-Tastatur!

Lese ich alle Ausgaben hier habe ich kombiniert verschiedene Methoden (clearFocus, requestFocusFromTouch etc), einfach nicht genug Zeit und Raum, zu beschreiben, was, das ich versucht habe zu tun, um dieses Problem zu lösen. Die wichtigsten Probleme sind oben beschrieben.

Hoffe auf Hilfe und Lösung des Problems...
Vielen Dank im Voraus..

InformationsquelleAutor Dimon | 2012-07-01

Schreibe einen Kommentar