Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0230ec94 authored by Yorke Lee's avatar Yorke Lee
Browse files

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
parent 495e70b7
Loading
Loading
Loading
Loading
+9 −12
Original line number Diff line number Diff line
@@ -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:
            final Fragment fragment =
                    (Fragment) super.instantiateItem(container, getRtlPosition(position));
            if (fragment instanceof SpeedDialFragment) {
                mSpeedDialFragment = (SpeedDialFragment) fragment;
                    return mSpeedDialFragment;
                case TAB_INDEX_RECENTS:
            } else if (fragment instanceof CallLogFragment) {
                mRecentsFragment = (CallLogFragment) fragment;
                    return mRecentsFragment;
                case TAB_INDEX_ALL_CONTACTS:
            } else if (fragment instanceof AllContactsFragment) {
                mAllContactsFragment = (AllContactsFragment) fragment;
                    return mAllContactsFragment;
            }
            return super.instantiateItem(container, position);
            return fragment;
        }

        @Override