diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 1d48407..5c5542a 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -3102,6 +3102,7 @@
     private Drawable.ConstantState updateTextButtonWithIconFromExternalActivity(
             int buttonId, ComponentName activityName, int fallbackDrawableId) {
         TextView button = (TextView) findViewById(buttonId);
+        if (button == null) return null;
         Drawable toolbarIcon = getExternalPackageToolbarIcon(activityName);
 
         // If we were unable to find the icon via the meta-data, use a generic one
@@ -3118,6 +3119,7 @@
     private Drawable.ConstantState updateButtonWithIconFromExternalActivity(
             int buttonId, ComponentName activityName, int fallbackDrawableId) {
         ImageView button = (ImageView) findViewById(buttonId);
+        if (button == null) return null;
         Drawable toolbarIcon = getExternalPackageToolbarIcon(activityName);
 
         // If we were unable to find the icon via the meta-data, use a generic one
@@ -3132,11 +3134,13 @@
 
     private void updateTextButtonWithDrawable(int buttonId, Drawable.ConstantState d) {
         TextView button = (TextView) findViewById(buttonId);
+        if (button == null) return;
         button.setCompoundDrawables(d.newDrawable(getResources()), null, null, null);
     }
 
     private void updateButtonWithDrawable(int buttonId, Drawable.ConstantState d) {
         ImageView button = (ImageView) findViewById(buttonId);
+        if (button == null) return;
         button.setImageDrawable(d.newDrawable(getResources()));
     }
 
