summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/com/android/dialer/DialtactsActivity.java35
-rw-r--r--src/com/android/dialer/settings/DialerSettingsActivity.java9
2 files changed, 27 insertions, 17 deletions
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index aacf20844..5494b7b54 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -176,6 +176,11 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
*/
private ListsFragment mListsFragment;
+ /**
+ * Tracks whether onSaveInstanceState has been called. If true, no fragment transactions can
+ * be commited.
+ */
+ private boolean mStateSaved;
private boolean mInDialpadSearch;
private boolean mInRegularSearch;
private boolean mClearSearchOnPause;
@@ -460,6 +465,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
@Override
protected void onResume() {
super.onResume();
+ mStateSaved = false;
if (mFirstLaunch) {
displayFragment(getIntent());
} else if (!phoneIsInUse() && mInCallDialpadUp) {
@@ -481,6 +487,9 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
hideDialpadAndSearchUi();
mClearSearchOnPause = false;
}
+ if (mSlideOut.hasStarted() && !mSlideOut.hasEnded()) {
+ commitDialpadFragmentHide();
+ }
super.onPause();
}
@@ -493,6 +502,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
outState.putBoolean(KEY_FIRST_LAUNCH, mFirstLaunch);
outState.putBoolean(KEY_IS_DIALPAD_SHOWN, mIsDialpadShown);
mActionBarController.saveInstanceState(outState);
+ mStateSaved = true;
}
@Override
@@ -608,7 +618,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
* @see #onDialpadShown
*/
private void showDialpadFragment(boolean animate) {
- if (mIsDialpadShown) {
+ if (mIsDialpadShown || mStateSaved) {
return;
}
mIsDialpadShown = true;
@@ -684,10 +694,11 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
* Finishes hiding the dialpad fragment after any animations are completed.
*/
private void commitDialpadFragmentHide() {
- final FragmentTransaction ft = getFragmentManager().beginTransaction();
- ft.hide(mDialpadFragment);
- ft.commit();
-
+ if (!mStateSaved && !mDialpadFragment.isHidden()) {
+ final FragmentTransaction ft = getFragmentManager().beginTransaction();
+ ft.hide(mDialpadFragment);
+ ft.commit();
+ }
mFloatingActionButtonController.scaleIn(AnimUtils.NO_DELAY);
}
@@ -840,7 +851,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
* Shows the search fragment
*/
private void enterSearchUi(boolean smartDialSearch, String query) {
- if (getFragmentManager().isDestroyed()) {
+ if (mStateSaved || getFragmentManager().isDestroyed()) {
// Weird race condition where fragment is doing work after the activity is destroyed
// due to talkback being on (b/10209937). Just return since we can't do any
// constructive here.
@@ -893,7 +904,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
*/
private void exitSearchUi() {
// See related bug in enterSearchUI();
- if (getFragmentManager().isDestroyed()) {
+ if (getFragmentManager().isDestroyed() || mStateSaved) {
return;
}
@@ -914,15 +925,11 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
mActionBarController.onSearchUiExited();
}
- /** Returns an Intent to launch Call Settings screen */
- public static Intent getCallSettingsIntent() {
- final Intent intent = new Intent(TelecomManager.ACTION_SHOW_CALL_SETTINGS);
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- return intent;
- }
-
@Override
public void onBackPressed() {
+ if (mStateSaved) {
+ return;
+ }
if (mIsDialpadShown) {
if (TextUtils.isEmpty(mSearchQuery) ||
(mSmartDialSearchFragment != null && mSmartDialSearchFragment.isVisible()
diff --git a/src/com/android/dialer/settings/DialerSettingsActivity.java b/src/com/android/dialer/settings/DialerSettingsActivity.java
index 43186664e..53c23c4b3 100644
--- a/src/com/android/dialer/settings/DialerSettingsActivity.java
+++ b/src/com/android/dialer/settings/DialerSettingsActivity.java
@@ -52,17 +52,20 @@ public class DialerSettingsActivity extends AnalyticsPreferenceActivity {
// Only show call setting menus if the current user is the primary/owner user.
if (isPrimaryUser()) {
final TelephonyManager telephonyManager =
- (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
+ (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
// Show "Call Settings" if there is one SIM and "Phone Accounts" if there are more.
if (telephonyManager.getPhoneCount() <= 1) {
final Header callSettingsHeader = new Header();
+ Intent callSettingsIntent = new Intent(TelecomManager.ACTION_SHOW_CALL_SETTINGS);
+ callSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+
callSettingsHeader.titleRes = R.string.call_settings_label;
callSettingsHeader.summaryRes = R.string.call_settings_description;
- callSettingsHeader.intent = DialtactsActivity.getCallSettingsIntent();
+ callSettingsHeader.intent = callSettingsIntent;
target.add(callSettingsHeader);
} else {
final Header phoneAccountSettingsHeader = new Header();
- final Intent phoneAccountSettingsIntent =
+ Intent phoneAccountSettingsIntent =
new Intent(TelecomManager.ACTION_CHANGE_PHONE_ACCOUNTS);
phoneAccountSettingsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);