commit 4f36e4183c4626c8c060d074f42a5d8a8aba1245
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Wed May 27 00:42:45 2020 +0100

    Hopefully get rid of the most common crash in the field right now by changing the States to always create all their Views from scratch.

diff --git a/src/main/java/org/distorted/states/RubikStatePattern.java b/src/main/java/org/distorted/states/RubikStatePattern.java
index 0280ee8c..efe4ca2e 100644
--- a/src/main/java/org/distorted/states/RubikStatePattern.java
+++ b/src/main/java/org/distorted/states/RubikStatePattern.java
@@ -108,9 +108,9 @@ public class RubikStatePattern extends RubikStateAbstract
     DisplayMetrics metrics = act.getResources().getDisplayMetrics();
     final float scale = metrics.density;
 
-    if( mPrevButton==null ) setupPrevButton(act,scale);
-    if( mNextButton==null ) setupNextButton(act,scale);
-    if( mMovesText ==null ) setupTextView(act,scale);
+    setupPrevButton(act,scale);
+    setupNextButton(act,scale);
+    setupTextView(act,scale);
 
     setTrioState(false);
 
@@ -120,7 +120,7 @@ public class RubikStatePattern extends RubikStateAbstract
     layoutLeft.addView(mMovesText);
     layoutLeft.addView(mNextButton);
 
-    if( mBackButton==null ) setupBackButton(act,scale);
+    setupBackButton(act,scale);
 
     LinearLayout layoutRight = act.findViewById(R.id.mainBarRight);
     layoutRight.removeAllViews();
@@ -272,10 +272,7 @@ public class RubikStatePattern extends RubikStateAbstract
 
   public void savePreferences(SharedPreferences.Editor editor)
     {
-    mBackButton= null;
-    mPrevButton= null;
-    mNextButton= null;
-    mMovesText = null;
+
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/states/RubikStatePlay.java b/src/main/java/org/distorted/states/RubikStatePlay.java
index 53d787ae..4394cf32 100644
--- a/src/main/java/org/distorted/states/RubikStatePlay.java
+++ b/src/main/java/org/distorted/states/RubikStatePlay.java
@@ -76,28 +76,28 @@ public class RubikStatePlay extends RubikStateAbstract implements AdapterView.On
     LinearLayout layoutTop = act.findViewById(R.id.upperBar);
     layoutTop.removeAllViews();
 
-    if( mObjButton   ==null ) setupObjectButton(act,scale);
+    setupObjectButton(act,scale);
     layoutTop.addView(mObjButton);
-    if( mLevelSpinner==null ) setupLevelSpinner(act,scale);
+    setupLevelSpinner(act,scale);
     layoutTop.addView(mLevelSpinner);
-    if( mPlayButton  ==null ) setupPlayButton(act,scale);
+    setupPlayButton(act,scale);
     layoutTop.addView(mPlayButton);
 
     // BOT ////////////////////////////
 
-    if( mSolveButton==null ) setupSolveButton(act,scale);
+    setupSolveButton(act,scale);
 
     LinearLayout layoutLeft = act.findViewById(R.id.mainBarLeft);
     layoutLeft.removeAllViews();
     layoutLeft.addView(mSolveButton);
 
-    if( mBackButton==null ) setupBackButton(act,scale);
+    setupBackButton(act,scale);
 
     LinearLayout layoutRight = act.findViewById(R.id.mainBarRight);
     layoutRight.removeAllViews();
     layoutRight.addView(mBackButton);
 
-    if( mPopup==null ) setupPopupWindow(act, scale);
+    setupPopupWindow(act, scale);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -303,12 +303,6 @@ public class RubikStatePlay extends RubikStateAbstract implements AdapterView.On
     editor.putInt("statePlay_object", mObject);
     editor.putInt("statePlay_size"  , mSize);
 
-    mObjButton   = null;
-    mBackButton  = null;
-    mSolveButton = null;
-    mPlayButton  = null;
-    mLevelSpinner= null;
-
     if( mPopup!=null )
       {
       mPopup.dismiss();
diff --git a/src/main/java/org/distorted/states/RubikStateSolution.java b/src/main/java/org/distorted/states/RubikStateSolution.java
index 3ef67ff0..a2357474 100644
--- a/src/main/java/org/distorted/states/RubikStateSolution.java
+++ b/src/main/java/org/distorted/states/RubikStateSolution.java
@@ -73,9 +73,9 @@ public class RubikStateSolution extends RubikStateAbstract implements RubikPostR
     layoutTop.addView(text);
 
     // BOT ////////////////////////////
-    if( mPrevButton==null ) setupPrevButton(act,scale);
-    if( mNextButton==null ) setupNextButton(act,scale);
-    if( mMovesText ==null ) setupTextView(act,scale);
+    setupPrevButton(act,scale);
+    setupNextButton(act,scale);
+    setupTextView(act,scale);
 
     LinearLayout layoutLeft = act.findViewById(R.id.mainBarLeft);
     layoutLeft.removeAllViews();
@@ -83,7 +83,7 @@ public class RubikStateSolution extends RubikStateAbstract implements RubikPostR
     layoutLeft.addView(mMovesText);
     layoutLeft.addView(mNextButton);
 
-    if( mBackButton==null ) setupBackButton(act,scale);
+    setupBackButton(act,scale);
 
     LinearLayout layoutRight = act.findViewById(R.id.mainBarRight);
     layoutRight.removeAllViews();
@@ -266,10 +266,7 @@ public class RubikStateSolution extends RubikStateAbstract implements RubikPostR
 
   public void savePreferences(SharedPreferences.Editor editor)
     {
-    mBackButton= null;
-    mPrevButton= null;
-    mNextButton= null;
-    mMovesText = null;
+
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
diff --git a/src/main/java/org/distorted/states/RubikStateSolver.java b/src/main/java/org/distorted/states/RubikStateSolver.java
index 0b9433ae..3ba05498 100644
--- a/src/main/java/org/distorted/states/RubikStateSolver.java
+++ b/src/main/java/org/distorted/states/RubikStateSolver.java
@@ -106,13 +106,13 @@ public class RubikStateSolver extends RubikStateAbstract
     for(ImageButton button: mColorButton) layoutTop.addView(button);
 
     // BOT ////////////////////////////
-    if( mSolveButton==null ) setupSolveButton(act,scale);
+    setupSolveButton(act,scale);
 
     LinearLayout layoutLeft = act.findViewById(R.id.mainBarLeft);
     layoutLeft.removeAllViews();
     layoutLeft.addView(mSolveButton);
 
-    if( mBackButton==null ) setupBackButton(act,scale);
+    setupBackButton(act,scale);
 
     LinearLayout layoutRight = act.findViewById(R.id.mainBarRight);
     layoutRight.removeAllViews();
@@ -252,10 +252,6 @@ public class RubikStateSolver extends RubikStateAbstract
 
   public void savePreferences(SharedPreferences.Editor editor)
     {
-    mColorButton = null;
-    mBackButton  = null;
-    mSolveButton = null;
-
     editor.putInt("stateSolver_color", mCurrentColor);
     }
 
diff --git a/src/main/java/org/distorted/states/RubikStateSolving.java b/src/main/java/org/distorted/states/RubikStateSolving.java
index 8675eaf3..40bacea4 100644
--- a/src/main/java/org/distorted/states/RubikStateSolving.java
+++ b/src/main/java/org/distorted/states/RubikStateSolving.java
@@ -108,7 +108,7 @@ public class RubikStateSolving extends RubikStateAbstract implements RubikPostRe
     LinearLayout layoutLeft = act.findViewById(R.id.mainBarLeft);
     layoutLeft.removeAllViews();
 
-    if( mPrevButton==null ) setupPrevMoveButtom(act,scale);
+    setupPrevMoveButtom(act,scale);
     layoutLeft.addView(mPrevButton);
 
     LinearLayout layoutRight = act.findViewById(R.id.mainBarRight);
@@ -214,8 +214,6 @@ public class RubikStateSolving extends RubikStateAbstract implements RubikPostRe
 
   public void savePreferences(SharedPreferences.Editor editor)
     {
-    mPrevButton = null;
-
     mElapsed = System.currentTimeMillis()-mStartTime;
     editor.putLong("stateSolving_elapsed" , mElapsed);
     mScores.savePreferences(editor);
