summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorke Lee <yorkelee@google.com>2014-09-26 14:33:29 -0700
committerYorke Lee <yorkelee@google.com>2014-09-26 14:33:29 -0700
commit0230ec94a8e1ee7a3a75e9e00883aa6c0ceeae29 (patch)
tree7fc6261dfefc4cf3d1529be151b8898ecb8ab0d8
parent495e70b7ae73100be2d5d2b356a810035b4f45f2 (diff)
Fix crash when switching between LTR/RTL
When the language is changed the order of tabs might change but the fragments stored in the fragment manager remains the same (becauase the fragment manager persists fragments across rotation and configuration changes). Retrieve the fragments from the fragment manager in an RTL adjusted fashion in instantiateItem, and also make the logic more resilient to ClassCastExceptions. Bug: 17673059 Change-Id: I1f9b7d85b6a4ecf3ff155c9e6e8cf875ddd51463
-rw-r--r--src/com/android/dialer/list/ListsFragment.java21
1 files changed, 9 insertions, 12 deletions
diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java
index 2aa78a2d2..24177f73f 100644
--- a/src/com/android/dialer/list/ListsFragment.java
+++ b/src/com/android/dialer/list/ListsFragment.java
@@ -205,19 +205,16 @@ public class ListsFragment extends AnalyticsFragment implements CallLogQueryHand
// On rotation the FragmentManager handles rotation. Therefore getItem() isn't called.
// Copy the fragments that the FragmentManager finds so that we can store them in
// instance variables for later.
- final Fragment fragment = (Fragment) super.instantiateItem(container, position);
- switch (getRtlPosition(position)) {
- case TAB_INDEX_SPEED_DIAL:
- mSpeedDialFragment = (SpeedDialFragment) fragment;
- return mSpeedDialFragment;
- case TAB_INDEX_RECENTS:
- mRecentsFragment = (CallLogFragment) fragment;
- return mRecentsFragment;
- case TAB_INDEX_ALL_CONTACTS:
- mAllContactsFragment = (AllContactsFragment) fragment;
- return mAllContactsFragment;
+ final Fragment fragment =
+ (Fragment) super.instantiateItem(container, getRtlPosition(position));
+ if (fragment instanceof SpeedDialFragment) {
+ mSpeedDialFragment = (SpeedDialFragment) fragment;
+ } else if (fragment instanceof CallLogFragment) {
+ mRecentsFragment = (CallLogFragment) fragment;
+ } else if (fragment instanceof AllContactsFragment) {
+ mAllContactsFragment = (AllContactsFragment) fragment;
}
- return super.instantiateItem(container, position);
+ return fragment;
}
@Override