diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionCircleFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionCircleFragment.java
index cff6907..47edf07 100644
--- a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionCircleFragment.java
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionCircleFragment.java
@@ -17,12 +17,15 @@
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         View rootView = inflater.inflate(layout.extension_circle_fragment, container, false);
-        rootView.findViewById(id.next).setOnClickListener(new View.OnClickListener() {
-            @Override public void onClick(View v) { ((ExtensionActivity) ExtensionCircleFragment.this.getActivity()).next(); }
-        });
-        rootView.findViewById(id.previous).setOnClickListener(new View.OnClickListener() {
-            @Override public void onClick(View v) { ((ExtensionActivity) ExtensionCircleFragment.this.getActivity()).previous(); }
-        });
+        final ExtensionActivity activity = (ExtensionActivity)getActivity();
+        if (activity != null) {
+            rootView.findViewById(id.next).setOnClickListener(new View.OnClickListener() {
+                @Override public void onClick(View v) { activity.next(); }
+            });
+            rootView.findViewById(id.previous).setOnClickListener(new View.OnClickListener() {
+                @Override public void onClick(View v) { activity.previous(); }
+            });
+        }
         SubsamplingScaleImageView imageView = rootView.findViewById(id.imageView);
         imageView.setImage(ImageSource.asset("sanmartino.jpg"));
         return rootView;
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionFreehandFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionFreehandFragment.java
index d943fea..5ea1467 100644
--- a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionFreehandFragment.java
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionFreehandFragment.java
@@ -17,9 +17,12 @@
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         View rootView = inflater.inflate(layout.extension_freehand_fragment, container, false);
-        rootView.findViewById(id.previous).setOnClickListener(new View.OnClickListener() {
-            @Override public void onClick(View v) { ((ExtensionActivity) ExtensionFreehandFragment.this.getActivity()).previous(); }
-        });
+        final ExtensionActivity activity = (ExtensionActivity)getActivity();
+        if (activity != null) {
+            rootView.findViewById(id.previous).setOnClickListener(new View.OnClickListener() {
+                @Override public void onClick(View v) { activity.previous(); }
+            });
+        }
         final FreehandView imageView = rootView.findViewById(id.imageView);
         imageView.setImage(ImageSource.asset("sanmartino.jpg"));
         rootView.findViewById(id.reset).setOnClickListener(new View.OnClickListener() {
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionPinFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionPinFragment.java
index f5231c1..c7f52f1 100644
--- a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionPinFragment.java
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/extension/ExtensionPinFragment.java
@@ -18,9 +18,12 @@
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         View rootView = inflater.inflate(layout.extension_pin_fragment, container, false);
-        rootView.findViewById(id.next).setOnClickListener(new View.OnClickListener() {
-            @Override public void onClick(View v) { ((ExtensionActivity) ExtensionPinFragment.this.getActivity()).next(); }
-        });
+        final ExtensionActivity activity = (ExtensionActivity)getActivity();
+        if (activity != null) {
+            rootView.findViewById(id.next).setOnClickListener(new View.OnClickListener() {
+                @Override public void onClick(View v) { activity.next(); }
+            });
+        }
         PinView imageView = rootView.findViewById(id.imageView);
         imageView.setImage(ImageSource.asset("sanmartino.jpg"));
         imageView.setPin(new PointF(1602f, 405f));
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayLargeFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayLargeFragment.java
index 58f923e..70d3445 100644
--- a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayLargeFragment.java
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayLargeFragment.java
@@ -17,9 +17,12 @@
     @Override
     public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
         View rootView = inflater.inflate(layout.imagedisplay_large_fragment, container, false);
-        rootView.findViewById(id.next).setOnClickListener(new View.OnClickListener() {
-            @Override public void onClick(View v) { ((ImageDisplayActivity) ImageDisplayLargeFragment.this.getActivity()).next(); }
-        });
+        final ImageDisplayActivity activity = (ImageDisplayActivity)getActivity();
+        if (activity != null) {
+            rootView.findViewById(id.next).setOnClickListener(new View.OnClickListener() {
+                @Override public void onClick(View v) { activity.next(); }
+            });
+        }
         SubsamplingScaleImageView imageView = rootView.findViewById(id.imageView);
         imageView.setImage(ImageSource.asset("card.png"));
         return rootView;
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRegionFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRegionFragment.java
index 5e6b1c8..566e144 100644
--- a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRegionFragment.java
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRegionFragment.java
@@ -29,9 +29,12 @@
         imageView.setRegionDecoderFactory(new CompatDecoderFactory<ImageRegionDecoder>(SkiaImageRegionDecoder.class, Bitmap.Config.ARGB_8888));
         imageView.setOrientation(SubsamplingScaleImageView.ORIENTATION_90);
         imageView.setImage(ImageSource.asset("card.png").region(new Rect(5200, 651, 8200, 3250)));
-        rootView.findViewById(id.previous).setOnClickListener(new View.OnClickListener() {
-            @Override public void onClick(View v) { ((ImageDisplayActivity) ImageDisplayRegionFragment.this.getActivity()).previous(); }
-        });
+        final ImageDisplayActivity activity = (ImageDisplayActivity)getActivity();
+        if (activity != null) {
+            rootView.findViewById(id.previous).setOnClickListener(new View.OnClickListener() {
+                @Override public void onClick(View v) { activity.previous(); }
+            });
+        }
         rootView.findViewById(id.rotate).setOnClickListener(new View.OnClickListener() {
             @Override public void onClick(View v) { imageView.setOrientation((imageView.getOrientation() + 90) % 360); }
         });
diff --git a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRotateFragment.java b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRotateFragment.java
index c44627a..46465c4 100644
--- a/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRotateFragment.java
+++ b/sample/src/main/java/com/davemorrissey/labs/subscaleview/test/imagedisplay/ImageDisplayRotateFragment.java
@@ -20,12 +20,15 @@
         final SubsamplingScaleImageView imageView = rootView.findViewById(id.imageView);
         imageView.setImage(ImageSource.asset("swissroad.jpg"));
         imageView.setOrientation(90);
-        rootView.findViewById(id.previous).setOnClickListener(new View.OnClickListener() {
-            @Override public void onClick(View v) { ((ImageDisplayActivity) ImageDisplayRotateFragment.this.getActivity()).previous(); }
-        });
-        rootView.findViewById(id.next).setOnClickListener(new View.OnClickListener() {
-            @Override public void onClick(View v) { ((ImageDisplayActivity) ImageDisplayRotateFragment.this.getActivity()).next(); }
-        });
+        final ImageDisplayActivity activity = (ImageDisplayActivity)getActivity();
+        if (activity != null) {
+            rootView.findViewById(id.previous).setOnClickListener(new View.OnClickListener() {
+                @Override public void onClick(View v) { activity.previous(); }
+            });
+            rootView.findViewById(id.next).setOnClickListener(new View.OnClickListener() {
+                @Override public void onClick(View v) { activity.next(); }
+            });
+        }
         rootView.findViewById(id.rotate).setOnClickListener(new View.OnClickListener() {
             @Override public void onClick(View v) { imageView.setOrientation((imageView.getOrientation() + 90) % 360); }
         });
