fixes removing shared preferences
diff --git a/robolectric/src/main/java/org/robolectric/tester/android/content/TestSharedPreferences.java b/robolectric/src/main/java/org/robolectric/tester/android/content/TestSharedPreferences.java
index e3c1212..4119a90 100644
--- a/robolectric/src/main/java/org/robolectric/tester/android/content/TestSharedPreferences.java
+++ b/robolectric/src/main/java/org/robolectric/tester/android/content/TestSharedPreferences.java
@@ -81,8 +81,7 @@
   }
 
   @Override
-  public void registerOnSharedPreferenceChangeListener(
-      OnSharedPreferenceChangeListener listener) {
+  public void registerOnSharedPreferenceChangeListener(OnSharedPreferenceChangeListener listener) {
     if(!listeners.contains(listener))
       listeners.add(listener);
   }
@@ -178,6 +177,7 @@
           previousContent.remove(key);
           keysToPassToListeners.add(key);
         }
+        editsThatNeedRemove.clear();
       }
 
       for (String key : editsThatNeedCommit.keySet()) {
@@ -186,6 +186,7 @@
           keysToPassToListeners.add(key);
         }
       }
+      editsThatNeedCommit.clear();
 
       for (OnSharedPreferenceChangeListener listener : listeners) {
         for (String key : keysToPassToListeners) {
@@ -207,4 +208,4 @@
     Set< String > v = ( Set< String > ) getValue( key, defValues );
     return v != null ? v : defValues;
   }
-}
+}
\ No newline at end of file
diff --git a/robolectric/src/test/java/org/robolectric/tester/android/content/TestSharedPreferencesTest.java b/robolectric/src/test/java/org/robolectric/tester/android/content/TestSharedPreferencesTest.java
index 05873fc..48b1c10 100644
--- a/robolectric/src/test/java/org/robolectric/tester/android/content/TestSharedPreferencesTest.java
+++ b/robolectric/src/test/java/org/robolectric/tester/android/content/TestSharedPreferencesTest.java
@@ -1,9 +1,13 @@
 package org.robolectric.tester.android.content;
 
+import android.content.Context;
 import android.content.SharedPreferences;
+import org.assertj.core.api.Assertions;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.robolectric.Robolectric;
 import org.robolectric.TestRunners;
 import org.robolectric.util.Transcript;
 
@@ -13,6 +17,7 @@
 import java.util.Set;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
@@ -63,6 +68,20 @@
   }
 
   @Test
+  public void commit_shouldClearEditsThatNeedRemoveAndEditsThatNeedCommit() throws Exception {
+    editor.commit();
+    editor.remove("string").commit();
+
+    assertThat(sharedPreferences.getString("string", "no value for key")).isEqualTo("no value for key");
+
+    TestSharedPreferences anotherSharedPreferences = new TestSharedPreferences(content, FILENAME, 3);
+    anotherSharedPreferences.edit().putString("string", "value for key").commit();
+
+    editor.commit();
+    assertThat(sharedPreferences.getString("string", "no value for key")).isEqualTo("value for key");
+  }
+
+  @Test
   public void getAll_shouldReturnAllValues() throws Exception {
     editor.commit();
     Map<String, ?> all = sharedPreferences.getAll();