diff options
| -rw-r--r-- | core/java/android/widget/Spinner.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/core/java/android/widget/Spinner.java b/core/java/android/widget/Spinner.java index 80d688ef2793..bcddca18009e 100644 --- a/core/java/android/widget/Spinner.java +++ b/core/java/android/widget/Spinner.java @@ -24,7 +24,6 @@ import android.content.DialogInterface.OnClickListener; import android.content.res.TypedArray; import android.database.DataSetObserver; import android.util.AttributeSet; -import android.view.KeyEvent; import android.view.View; import android.view.ViewGroup; @@ -40,6 +39,7 @@ import android.view.ViewGroup; public class Spinner extends AbsSpinner implements OnClickListener { private CharSequence mPrompt; + private AlertDialog mPopup; public Spinner(Context context) { this(context, null); @@ -78,6 +78,16 @@ public class Spinner extends AbsSpinner implements OnClickListener { } } + @Override + protected void onDetachedFromWindow() { + super.onDetachedFromWindow(); + + if (mPopup != null && mPopup.isShowing()) { + mPopup.dismiss(); + mPopup = null; + } + } + /** * <p>A spinner does not support item click events. Calling this method * will raise an exception.</p> @@ -244,7 +254,7 @@ public class Spinner extends AbsSpinner implements OnClickListener { if (mPrompt != null) { builder.setTitle(mPrompt); } - builder.setSingleChoiceItems(adapter, getSelectedItemPosition(), this).show(); + mPopup = builder.setSingleChoiceItems(adapter, getSelectedItemPosition(), this).show(); } return handled; @@ -253,6 +263,7 @@ public class Spinner extends AbsSpinner implements OnClickListener { public void onClick(DialogInterface dialog, int which) { setSelection(which); dialog.dismiss(); + mPopup = null; } /** |