Nun, es ist ein wenig kompliziert, als ich dachte.
Ich füge die Schritt für Schritt Details hier hinzu. Versuch es zu folgen. Ich konnte dies in API 10 erreichen.
Und diese Lösung setzt voraus, dass Sie den Eingabeaufforderungsdialog programmatisch schließen sollen, wenn der Benutzer auf die Home-Taste klickt oder wenn Sie zur nächsten Aktivität ohne Benutzerinteraktion wechseln mussten
Der erste Schritt besteht darin, einen benutzerdefinierten Spinner durch Erweitern der Spinner-Klasse zu erstellen. Lassen Sie uns sagen, ich geschaffen habe eine Klasse CustomSpinner im Paket com.bts.sampleapp
Meine CustomSpinner Klasse wie folgt aussieht genannt,
package com.bts.sampleapp;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.Spinner;
public class CustomSpinner extends Spinner{
Context context=null;
public CustomSpinner(Context context) {
super(context);
this.context=context;
}
public CustomSpinner(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CustomSpinner(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void onDetachedFromWindow() {
super.onDetachedFromWindow();
}
}
nun in der XML-Datei, ersetzen Spinner Element von diesem Brauch Spinner,
<com.bts.sampleapp.CustomSpinner
android:id="@+id/spin"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Der nächste Schritt ist zu initialisieren und setzen Adapter auf diese Spinner in Ihrer Aktivitätsklasse,
Der letzte Schritt ist das Schließen des Dialogfelds, wenn der Benutzer auf HomeButton klickt oder wenn die Aktivität in den Hintergrund wechselt. Um dies zu tun, außer Kraft setzen wir die onPause() wie diese,
@Override
protected void onPause() {
Log.i("Life Cycle", "onPause");
spin.onDetachedFromWindow();
super.onPause();
}
Jetzt im onPause() rufen Sie die Methode spin.onDetachedFromWindow();
, die den Job von für die Aufforderung Dialog zu schließen.
Wenn Sie von einer beliebigen Stelle innerhalb der Aktivitätsliste ausaufrufen, sollte das Dialogfeld der Spinner-Eingabeaufforderung geschlossen werden, wenn es geöffnet ist.
Blinde Vermutung zu schließen (so geht es nicht als Antwort): würde Fokus aus dieser Sicht auf 'onResume()' löst das Problem nicht zu nehmen? –
Sie benötigen die Methode onStart() oder onResume(). – saravanan