diff --git a/src/com/android/contacts/editor/PickRawContactDialogFragment.java b/src/com/android/contacts/editor/PickRawContactDialogFragment.java
index 0f87d99..623d038 100644
--- a/src/com/android/contacts/editor/PickRawContactDialogFragment.java
+++ b/src/com/android/contacts/editor/PickRawContactDialogFragment.java
@@ -36,6 +36,10 @@
  * for the chosen raw contact.
  */
 public class PickRawContactDialogFragment extends DialogFragment {
+    private static final String ARGS_URI = "uri";
+    private static final String ARGS_MATERIAL_PALETTE = "materialPalette";
+    private static final String ARGS_IS_USER_PROFILE = "isUserProfile";
+
     /**
      * Used to list the account info for the given raw contacts list.
      */
@@ -147,10 +151,12 @@
     public static PickRawContactDialogFragment getInstance(Uri uri, Cursor cursor,
             MaterialPalette materialPalette, boolean isUserProfile) {
         final PickRawContactDialogFragment fragment = new PickRawContactDialogFragment();
-        fragment.setUri(uri);
+        final Bundle args = new Bundle();
+        args.putParcelable(ARGS_URI, uri);
+        args.putParcelable(ARGS_MATERIAL_PALETTE, materialPalette);
+        args.putBoolean(ARGS_IS_USER_PROFILE, isUserProfile);
+        fragment.setArguments(args);
         fragment.setCursor(cursor);
-        fragment.setMaterialPalette(materialPalette);
-        fragment.setIsUserProfile(isUserProfile);
         return fragment;
     }
 
@@ -180,8 +186,16 @@
         finishActivity();
     }
 
-    private void setUri(Uri uri) {
-        mUri = uri;
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        final Bundle args = getArguments();
+        if (args != null) {
+            mUri = args.getParcelable(ARGS_URI);
+            mMaterialPalette = args.getParcelable(ARGS_MATERIAL_PALETTE);
+            mIsUserProfile = args.getBoolean(ARGS_IS_USER_PROFILE);
+        }
     }
 
     public void setCursor(Cursor cursor) {
@@ -191,14 +205,6 @@
         mCursor = cursor;
     }
 
-    private void setMaterialPalette(MaterialPalette materialPalette) {
-        mMaterialPalette = materialPalette;
-    }
-
-    private void setIsUserProfile(boolean isUserProfile) {
-        mIsUserProfile = isUserProfile;
-    }
-
     private void finishActivity() {
         if (getActivity() != null && !getActivity().isFinishing()) {
             getActivity().finish();
