summaryrefslogtreecommitdiff
path: root/src/com
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 /src/com
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
Diffstat (limited to 'src/com')
-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