Fix IllegalStateException in onOptionsItemSelected
Check to make sure the activity is still visible before doing anything.
Bug:24373052
Change-Id: I35a05227f02c117b29b5a29af9dfc54c00ba3616
diff --git a/src/com/android/dialer/settings/DialerSettingsActivity.java b/src/com/android/dialer/settings/DialerSettingsActivity.java
index 2b72772..fee0fa8 100644
--- a/src/com/android/dialer/settings/DialerSettingsActivity.java
+++ b/src/com/android/dialer/settings/DialerSettingsActivity.java
@@ -35,6 +35,8 @@
public class DialerSettingsActivity extends AppCompatPreferenceActivity {
protected SharedPreferences mPreferences;
+ private boolean mIsVisible;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -42,6 +44,31 @@
}
@Override
+ protected void onStart() {
+ super.onStart();
+ mIsVisible = true;
+ }
+
+ @Override
+ protected void onStop() {
+ mIsVisible = false;
+ super.onStop();
+ }
+
+ @Override
+ protected void onSaveInstanceState(Bundle out) {
+ mIsVisible = false;
+ super.onSaveInstanceState(out);
+ }
+
+ /**
+ * Returns true when the Activity is currently visible (between onStart and onStop).
+ */
+ /* package */ boolean isVisible() {
+ return mIsVisible;
+ }
+
+ @Override
public void onBuildHeaders(List<Header> target) {
Header displayOptionsHeader = new Header();
displayOptionsHeader.titleRes = R.string.display_options_title;
@@ -131,6 +158,14 @@
}
@Override
+ public void onBackPressed() {
+ if (!isVisible()) {
+ return;
+ }
+ super.onBackPressed();
+ }
+
+ @Override
protected boolean isValidFragment(String fragmentName) {
return true;
}