diff --git a/src/com/android/settings/datausage/CellDataPreference.java b/src/com/android/settings/datausage/CellDataPreference.java
index 73699d6..fa333f1 100644
--- a/src/com/android/settings/datausage/CellDataPreference.java
+++ b/src/com/android/settings/datausage/CellDataPreference.java
@@ -182,7 +182,7 @@
             setMobileDataEnabled(true);
             if (nextSir != null && currentSir != null &&
                 currentSir.getSubscriptionId() == nextSir.getSubscriptionId()) {
-                disableDataForOtherSubscriptions(currentSir);
+                disableDataForOtherSubscriptions(mSubId);
             }
             return;
         }
@@ -193,14 +193,15 @@
 
         builder.setTitle(R.string.sim_change_data_title);
         builder.setMessage(getContext().getString(R.string.sim_change_data_message,
-                    currentSir.getDisplayName(), previousName));
+                String.valueOf(currentSir != null ? currentSir.getDisplayName() : null),
+                previousName));
 
         builder.setPositiveButton(R.string.okay, new DialogInterface.OnClickListener() {
             @Override
             public void onClick(DialogInterface dialog, int id) {
-                mSubscriptionManager.setDefaultDataSubId(currentSir.getSubscriptionId());
+                mSubscriptionManager.setDefaultDataSubId(mSubId);
                 setMobileDataEnabled(true);
-                disableDataForOtherSubscriptions(currentSir);
+                disableDataForOtherSubscriptions(mSubId);
             }
         });
         builder.setNegativeButton(R.string.cancel, null);
@@ -208,11 +209,11 @@
         builder.create().show();
     }
 
-    private void disableDataForOtherSubscriptions(SubscriptionInfo currentSir) {
+    private void disableDataForOtherSubscriptions(int subId) {
         List<SubscriptionInfo> subInfoList = mSubscriptionManager.getActiveSubscriptionInfoList();
         if (subInfoList != null) {
             for (SubscriptionInfo subInfo : subInfoList) {
-                if (subInfo.getSubscriptionId() != currentSir.getSubscriptionId()) {
+                if (subInfo.getSubscriptionId() != subId) {
                     mTelephonyManager.setDataEnabled(subInfo.getSubscriptionId(), false);
                 }
             }
