diff --git a/src/com/android/deskclock/AlarmClockFragment.java b/src/com/android/deskclock/AlarmClockFragment.java
index 71ce03c..35c1917 100644
--- a/src/com/android/deskclock/AlarmClockFragment.java
+++ b/src/com/android/deskclock/AlarmClockFragment.java
@@ -1443,9 +1443,12 @@
 
     @Override
     public void setFabAppearance(ImageButton fab) {
+        if (!isAdded()) {
+            return;
+        }
         fab.setVisibility(View.VISIBLE);
         fab.setImageResource(R.drawable.ic_fab_plus);
-        fab.setContentDescription(fab.getContext().getString(R.string.button_alarms));
+        fab.setContentDescription(getString(R.string.button_alarms));
     }
 
     @Override
diff --git a/src/com/android/deskclock/ClockFragment.java b/src/com/android/deskclock/ClockFragment.java
index ab818cb..6d76cd5 100644
--- a/src/com/android/deskclock/ClockFragment.java
+++ b/src/com/android/deskclock/ClockFragment.java
@@ -278,9 +278,12 @@
 
     @Override
     public void setFabAppearance(ImageButton fab) {
+        if (!isAdded()) {
+            return;
+        }
         fab.setVisibility(View.VISIBLE);
         fab.setImageResource(R.drawable.ic_globe);
-        fab.setContentDescription(fab.getContext().getString(R.string.button_cities));
+        fab.setContentDescription(getString(R.string.button_cities));
     }
 
     @Override
diff --git a/src/com/android/deskclock/stopwatch/StopwatchFragment.java b/src/com/android/deskclock/stopwatch/StopwatchFragment.java
index 3a23414..26a532f 100644
--- a/src/com/android/deskclock/stopwatch/StopwatchFragment.java
+++ b/src/com/android/deskclock/stopwatch/StopwatchFragment.java
@@ -874,8 +874,11 @@
 
     @Override
     public void setFabAppearance(ImageButton fab) {
-        mFab = fab;
+        if (!isAdded()) {
+            return;
+        }
 
+        mFab = fab;
         if (mState == Stopwatches.STOPWATCH_RUNNING) {
             mFab.setImageResource(R.drawable.ic_fab_pause);
             mFab.setContentDescription(getString(R.string.sw_stop_button));
@@ -888,6 +891,10 @@
 
     @Override
     public void setLeftRightButtonAppearance(ImageButton left, ImageButton right) {
+        if (!isAdded()) {
+            return;
+        }
+
         mLeftButton = left;
         mRightButton = right;
         mLeftButton.setVisibility(mState == Stopwatches.STOPWATCH_RESET ? View.INVISIBLE :
diff --git a/src/com/android/deskclock/timer/TimerFragment.java b/src/com/android/deskclock/timer/TimerFragment.java
index 9c13752..7c567b6 100644
--- a/src/com/android/deskclock/timer/TimerFragment.java
+++ b/src/com/android/deskclock/timer/TimerFragment.java
@@ -513,6 +513,10 @@
 
     @Override
     public void setFabAppearance(ImageButton fab) {
+        if (!isAdded()) {
+            return;
+        }
+
         mFab = fab;
         if (mFab != null) {
             if (atTimerTab()) {
@@ -540,6 +544,10 @@
 
     @Override
     public void setLeftRightButtonAppearance(ImageButton left, ImageButton right) {
+        if (!isAdded()) {
+            return;
+        }
+
         mLeftButton = left;
         mRightButton = right;
         if (mLeftButton != null && mRightButton != null && atTimerTab()) {
