Fix NPE resulting from invalid instance state
Bug: 17281017
- Ensure any transient state is cleared before saving instance state by
cancelling the current animator if applicable.
Change-Id: Ibebf5f4d89046453d36f43b98240a2cbef74288e
diff --git a/src/com/android/calculator2/Calculator.java b/src/com/android/calculator2/Calculator.java
index d4f10f0..83a9bb9 100644
--- a/src/com/android/calculator2/Calculator.java
+++ b/src/com/android/calculator2/Calculator.java
@@ -27,6 +27,7 @@
import android.app.Activity;
import android.graphics.Rect;
import android.os.Bundle;
+import android.support.annotation.NonNull;
import android.support.v4.view.ViewPager;
import android.text.Editable;
import android.text.TextUtils;
@@ -44,8 +45,6 @@
import com.android.calculator2.CalculatorEditText.OnTextSizeChangeListener;
import com.android.calculator2.CalculatorExpressionEvaluator.EvaluateCallback;
-import java.lang.Override;
-
public class Calculator extends Activity
implements OnTextSizeChangeListener, EvaluateCallback, OnLongClickListener {
@@ -157,8 +156,14 @@
}
@Override
- protected void onSaveInstanceState(Bundle outState) {
+ protected void onSaveInstanceState(@NonNull Bundle outState) {
+ // If there's an animation in progress, cancel it first to ensure our state is up-to-date.
+ if (mCurrentAnimator != null) {
+ mCurrentAnimator.cancel();
+ }
+
super.onSaveInstanceState(outState);
+
outState.putInt(KEY_CURRENT_STATE, mCurrentState.ordinal());
outState.putString(KEY_CURRENT_EXPRESSION,
mTokenizer.getNormalizedExpression(mFormulaEditText.getText().toString()));