diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java
index 6822494..407f972 100644
--- a/src/com/android/contacts/activities/ContactSelectionActivity.java
+++ b/src/com/android/contacts/activities/ContactSelectionActivity.java
@@ -527,16 +527,6 @@
     }
 
     @Override
-    public boolean onContextItemSelected(MenuItem item) {
-        ContextMenuAdapter menuAdapter = mListFragment.getContextMenuAdapter();
-        if (menuAdapter != null) {
-            return menuAdapter.onContextItemSelected(item);
-        }
-
-        return super.onContextItemSelected(item);
-    }
-
-    @Override
     public boolean onQueryTextChange(String newText) {
         mListFragment.setQueryString(newText, true);
         return false;
diff --git a/src/com/android/contacts/list/ContactEntryListFragment.java b/src/com/android/contacts/list/ContactEntryListFragment.java
index d522b5e..7971905 100644
--- a/src/com/android/contacts/list/ContactEntryListFragment.java
+++ b/src/com/android/contacts/list/ContactEntryListFragment.java
@@ -61,7 +61,6 @@
 import com.android.contacts.common.list.DirectoryListLoader;
 import com.android.contacts.common.list.DirectoryPartition;
 import com.android.contacts.common.preference.ContactsPreferences;
-import com.android.contacts.widget.ContextMenuAdapter;
 
 /**
  * Common base class for various contact-related list fragments.
@@ -128,7 +127,6 @@
     private int mSortOrder;
     private int mDirectoryResultLimit = DEFAULT_DIRECTORY_RESULT_LIMIT;
 
-    private ContextMenuAdapter mContextMenuAdapter;
     private ContactPhotoManager mPhotoManager;
     private ContactListEmptyView mEmptyView;
     private ContactsPreferences mContactsPrefs;
@@ -692,17 +690,6 @@
         mDirectoryResultLimit = limit;
     }
 
-    public void setContextMenuAdapter(ContextMenuAdapter adapter) {
-        mContextMenuAdapter = adapter;
-        if (mListView != null) {
-            mListView.setOnCreateContextMenuListener(adapter);
-        }
-    }
-
-    public ContextMenuAdapter getContextMenuAdapter() {
-        return mContextMenuAdapter;
-    }
-
     protected boolean loadPreferences() {
         boolean changed = false;
         if (getContactNameDisplayOrder() != mContactsPrefs.getDisplayOrder()) {
@@ -769,10 +756,6 @@
         // We manually save/restore the listview state
         mListView.setSaveEnabled(false);
 
-        if (mContextMenuAdapter != null) {
-            mListView.setOnCreateContextMenuListener(mContextMenuAdapter);
-        }
-
         configureVerticalScrollbar();
         configurePhotoLoader();
     }
