Fixes #1844366. Prevents window leak in Spinner.
diff --git a/core/java/android/widget/Spinner.java b/core/java/android/widget/Spinner.java
index 80d688e..bcddca1 100644
--- a/core/java/android/widget/Spinner.java
+++ b/core/java/android/widget/Spinner.java
@@ -24,7 +24,6 @@
 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 @@
 public class Spinner extends AbsSpinner implements OnClickListener {
     
     private CharSequence mPrompt;
+    private AlertDialog mPopup;
 
     public Spinner(Context context) {
         this(context, null);
@@ -78,6 +78,16 @@
         }
     }
 
+    @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 @@
             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 void onClick(DialogInterface dialog, int which) {
         setSelection(which);
         dialog.dismiss();
+        mPopup = null;
     }
 
     /**