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

Commit 03fbfcbd authored by Stanley Wang's avatar Stanley Wang
Browse files

Fixe the problem of invalid switch preference.

The source of this problem is that onBindViewHolder is called
after the user add the OnMainSwitchChangeListener. Then
preference gets a new MainSwitchBar in onBindViewHolder and
causes the listener to fail.

Bug: 223325900
Test: Manually test and observe the UI
Change-Id: Icc2e3c774ae1a8cb81b8ec5a16a82405aedc7c1c
parent a61b748e
Loading
Loading
Loading
Loading
+5 −5
Original line number Original line Diff line number Diff line
@@ -122,9 +122,10 @@ public class MainSwitchPreference extends TwoStatePreference implements OnMainSw
     * Adds a listener for switch changes
     * Adds a listener for switch changes
     */
     */
    public void addOnSwitchChangeListener(OnMainSwitchChangeListener listener) {
    public void addOnSwitchChangeListener(OnMainSwitchChangeListener listener) {
        if (mMainSwitchBar == null) {
        if (!mSwitchChangeListeners.contains(listener)) {
            mSwitchChangeListeners.add(listener);
            mSwitchChangeListeners.add(listener);
        } else {
        }
        if (mMainSwitchBar != null) {
            mMainSwitchBar.addOnSwitchChangeListener(listener);
            mMainSwitchBar.addOnSwitchChangeListener(listener);
        }
        }
    }
    }
@@ -133,9 +134,8 @@ public class MainSwitchPreference extends TwoStatePreference implements OnMainSw
     * Remove a listener for switch changes
     * Remove a listener for switch changes
     */
     */
    public void removeOnSwitchChangeListener(OnMainSwitchChangeListener listener) {
    public void removeOnSwitchChangeListener(OnMainSwitchChangeListener listener) {
        if (mMainSwitchBar == null) {
        mSwitchChangeListeners.remove(listener);
        mSwitchChangeListeners.remove(listener);
        } else {
        if (mMainSwitchBar != null) {
            mMainSwitchBar.removeOnSwitchChangeListener(listener);
            mMainSwitchBar.removeOnSwitchChangeListener(listener);
        }
        }
    }
    }