diff --git a/src/com/android/camera/Camera.java b/src/com/android/camera/Camera.java
index bb0c0e0..0da0095 100644
--- a/src/com/android/camera/Camera.java
+++ b/src/com/android/camera/Camera.java
@@ -606,6 +606,9 @@
 
     @Override
     public void showGpsOnScreenIndicator(boolean hasSignal) {
+        if (mGpsIndicator == null) {
+            return;
+        }
         if (hasSignal) {
             mGpsIndicator.setImageResource(R.drawable.ic_viewfinder_gps_on);
         } else {
@@ -616,10 +619,16 @@
 
     @Override
     public void hideGpsOnScreenIndicator() {
+        if (mGpsIndicator == null) {
+            return;
+        }
         mGpsIndicator.setVisibility(View.GONE);
     }
 
     private void updateExposureOnScreenIndicator(int value) {
+        if (mExposureIndicator == null) {
+            return;
+        }
         if (value == 0) {
             mExposureIndicator.setText("");
             mExposureIndicator.setVisibility(View.GONE);
@@ -635,6 +644,9 @@
     }
 
     private void updateFlashOnScreenIndicator(String value) {
+        if (mFlashIndicator == null) {
+            return;
+        }
         if (Parameters.FLASH_MODE_AUTO.equals(value)) {
             mFlashIndicator.setImageResource(R.drawable.ic_indicators_landscape_flash_auto);
         } else if (Parameters.FLASH_MODE_ON.equals(value)) {
@@ -645,10 +657,16 @@
     }
 
     private void updateSceneOnScreenIndicator(boolean isVisible) {
+        if (mSceneIndicator == null) {
+            return;
+        }
         mSceneIndicator.setVisibility(isVisible ? View.VISIBLE : View.GONE);
     }
 
     private void updateWhiteBalanceOnScreenIndicator(String value) {
+        if (mWhiteBalanceIndicator == null) {
+            return;
+        }
         if (Parameters.WHITE_BALANCE_AUTO.equals(value)) {
             mWhiteBalanceIndicator.setVisibility(View.GONE);
         } else {
@@ -666,6 +684,9 @@
     }
 
     private void updateFocusOnScreenIndicator(String value) {
+        if (mFocusIndicator == null) {
+            return;
+        }
         if (Parameters.FOCUS_MODE_INFINITY.equals(value)) {
             mFocusIndicator.setImageResource(R.drawable.ic_indicators_landscape);
             mFocusIndicator.setVisibility(View.VISIBLE);
