Hide unnecessary menus when launched via DIAL intent
ViewPager#getCurrentItem() returns "tabIndex" after
ViewPager#setCurrentItem(tabIndex, false), so we need to preserve
the previous value.
TESTED (using phone devices with/without a hard menu key)
- swipe actions do not corrupt menus
- tab clicks do not corrupt menus
- DIAL intent corretly shows/hides menus
- Menus aren't corrupted in Dialpad Chooser
Bug: 5118757
Change-Id: Id857a2d7ac5a007db65b20f80270a07ea527ba7f
diff --git a/src/com/android/contacts/activities/DialtactsActivity.java b/src/com/android/contacts/activities/DialtactsActivity.java
index b6dfbfa..12709c8 100644
--- a/src/com/android/contacts/activities/DialtactsActivity.java
+++ b/src/com/android/contacts/activities/DialtactsActivity.java
@@ -568,13 +568,14 @@
} else {
tabIndex = mLastManuallySelectedFragment;
}
+
+ final int previousItemIndex = mViewPager.getCurrentItem();
mViewPager.setCurrentItem(tabIndex, false /* smoothScroll */);
- if (mViewPager.getCurrentItem() == tabIndex) {
- mPageChangeListener.setCurrentPosition(tabIndex);
- sendFragmentVisibilityChange(tabIndex, true);
- } else {
- getActionBar().selectTab(getActionBar().getTabAt(tabIndex));
+ if (previousItemIndex != tabIndex) {
+ sendFragmentVisibilityChange(previousItemIndex, false);
}
+ mPageChangeListener.setCurrentPosition(tabIndex);
+ sendFragmentVisibilityChange(tabIndex, true);
// Restore to the previous manual selection
mLastManuallySelectedFragment = savedTabIndex;