diff --git a/src/com/android/contacts/JoinContactActivity.java b/src/com/android/contacts/JoinContactActivity.java
index 8bae422..ea48763 100644
--- a/src/com/android/contacts/JoinContactActivity.java
+++ b/src/com/android/contacts/JoinContactActivity.java
@@ -91,7 +91,7 @@
             }
         });
 
-        FragmentTransaction transaction = openFragmentTransaction();
+        FragmentTransaction transaction = getFragmentManager().openTransaction();
         transaction.add(android.R.id.content, mListFragment);
         transaction.commit();
     }
diff --git a/src/com/android/contacts/MultiplePhonePickerActivity.java b/src/com/android/contacts/MultiplePhonePickerActivity.java
index 08811e3..572b4de 100644
--- a/src/com/android/contacts/MultiplePhonePickerActivity.java
+++ b/src/com/android/contacts/MultiplePhonePickerActivity.java
@@ -60,7 +60,7 @@
 
         Parcelable[] extras = getIntent().getParcelableArrayExtra(Intents.EXTRA_PHONE_URIS);
         mListFragment.setSelectedUris(extras);
-        FragmentTransaction transaction = openFragmentTransaction();
+        FragmentTransaction transaction = getFragmentManager().openTransaction();
         transaction.add(android.R.id.content, mListFragment);
         transaction.commit();
     }
diff --git a/src/com/android/contacts/activities/ContactBrowserActivity.java b/src/com/android/contacts/activities/ContactBrowserActivity.java
index a4fb261..09009b4 100644
--- a/src/com/android/contacts/activities/ContactBrowserActivity.java
+++ b/src/com/android/contacts/activities/ContactBrowserActivity.java
@@ -224,7 +224,7 @@
         }
 
         if (replaceList) {
-            openFragmentTransaction()
+            getFragmentManager().openTransaction()
                     .replace(R.id.list_container, mListFragment)
                     .commit();
         }
@@ -273,14 +273,14 @@
             mDetailFragment.loadUri(contactLookupUri);
 
             // Nothing showing yet? Create (this happens during Activity-Startup)
-            openFragmentTransaction()
+            getFragmentManager().openTransaction()
                     .replace(R.id.detail_container, mDetailFragment)
                     .commit();
         } else {
             closeDetailFragment();
 
             mEmptyFragment = new ContactNoneFragment();
-            openFragmentTransaction()
+            getFragmentManager().openTransaction()
                     .replace(R.id.detail_container, mEmptyFragment)
                     .commit();
         }
@@ -299,7 +299,7 @@
                 Contacts.CONTENT_ITEM_TYPE, new Bundle());
 
         // Nothing showing yet? Create (this happens during Activity-Startup)
-        openFragmentTransaction()
+        getFragmentManager().openTransaction()
                 .replace(R.id.detail_container, mEditorFragment)
                 .commit();
     }
diff --git a/src/com/android/contacts/activities/ContactDetailActivity.java b/src/com/android/contacts/activities/ContactDetailActivity.java
index 1e963f5..58c5312 100644
--- a/src/com/android/contacts/activities/ContactDetailActivity.java
+++ b/src/com/android/contacts/activities/ContactDetailActivity.java
@@ -43,7 +43,8 @@
 
         setContentView(R.layout.contact_detail_activity);
 
-        mFragment = (ContactDetailFragment) findFragmentById(R.id.contact_detail_fragment);
+        mFragment = (ContactDetailFragment) getFragmentManager().findFragmentById(
+                R.id.contact_detail_fragment);
         mFragment.setListener(mFragmentListener);
         mFragment.loadUri(getIntent().getData());
 
diff --git a/src/com/android/contacts/activities/ContactEditorActivity.java b/src/com/android/contacts/activities/ContactEditorActivity.java
index 7c95136..85aa82e 100644
--- a/src/com/android/contacts/activities/ContactEditorActivity.java
+++ b/src/com/android/contacts/activities/ContactEditorActivity.java
@@ -49,7 +49,8 @@
 
         setContentView(R.layout.contact_editor_activity);
 
-        mFragment = (ContactEditorFragment) findFragmentById(R.id.contact_editor_fragment);
+        mFragment = (ContactEditorFragment) getFragmentManager().findFragmentById(
+                R.id.contact_editor_fragment);
         mFragment.setListener(mFragmentListener);
         mFragment.load(getIntent().getAction(), getIntent().getData(),
                 getIntent().resolveType(getContentResolver()), getIntent().getExtras());
diff --git a/src/com/android/contacts/activities/ContactSearchActivity.java b/src/com/android/contacts/activities/ContactSearchActivity.java
index 799653c..cac3e1e 100644
--- a/src/com/android/contacts/activities/ContactSearchActivity.java
+++ b/src/com/android/contacts/activities/ContactSearchActivity.java
@@ -67,7 +67,7 @@
 
         if (mListFragment == null) {
             mListFragment = createContactSearchFragment();
-            openFragmentTransaction()
+            getFragmentManager().openTransaction()
                     .replace(R.id.list_container, mListFragment)
                     .commit();
         }
diff --git a/src/com/android/contacts/activities/ContactSelectionActivity.java b/src/com/android/contacts/activities/ContactSelectionActivity.java
index b1e13ad..66d06d2 100644
--- a/src/com/android/contacts/activities/ContactSelectionActivity.java
+++ b/src/com/android/contacts/activities/ContactSelectionActivity.java
@@ -104,7 +104,7 @@
             listFragmentContainerId = android.R.id.content;
         }
 
-        FragmentTransaction transaction = openFragmentTransaction();
+        FragmentTransaction transaction = getFragmentManager().openTransaction();
         transaction.add(listFragmentContainerId, mListFragment);
         transaction.commit();
     }
diff --git a/src/com/android/contacts/views/editor/TargetedDialogFragment.java b/src/com/android/contacts/views/editor/TargetedDialogFragment.java
index f14bcae..ee0047d 100644
--- a/src/com/android/contacts/views/editor/TargetedDialogFragment.java
+++ b/src/com/android/contacts/views/editor/TargetedDialogFragment.java
@@ -52,6 +52,6 @@
 
     protected Object getTarget() {
         return mTargetFragmentId == -1 ? getActivity()
-                : getActivity().findFragmentById(mTargetFragmentId);
+                : getActivity().getFragmentManager().findFragmentById(mTargetFragmentId);
     }
 }
