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
This commit is contained in:
@@ -122,9 +122,10 @@ public class MainSwitchPreference extends TwoStatePreference implements OnMainSw
|
||||
* Adds a listener for switch changes
|
||||
*/
|
||||
public void addOnSwitchChangeListener(OnMainSwitchChangeListener listener) {
|
||||
if (mMainSwitchBar == null) {
|
||||
if (!mSwitchChangeListeners.contains(listener)) {
|
||||
mSwitchChangeListeners.add(listener);
|
||||
} else {
|
||||
}
|
||||
if (mMainSwitchBar != null) {
|
||||
mMainSwitchBar.addOnSwitchChangeListener(listener);
|
||||
}
|
||||
}
|
||||
@@ -133,9 +134,8 @@ public class MainSwitchPreference extends TwoStatePreference implements OnMainSw
|
||||
* Remove a listener for switch changes
|
||||
*/
|
||||
public void removeOnSwitchChangeListener(OnMainSwitchChangeListener listener) {
|
||||
if (mMainSwitchBar == null) {
|
||||
mSwitchChangeListeners.remove(listener);
|
||||
} else {
|
||||
mSwitchChangeListeners.remove(listener);
|
||||
if (mMainSwitchBar != null) {
|
||||
mMainSwitchBar.removeOnSwitchChangeListener(listener);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user