Как реализовать оба слайдера.OnChangeListener и RangeSlider.OnChangeListener

#android #material-design #material-components-android

#Android #материал-дизайн #материал-компоненты-android

Вопрос:

У меня есть ClassFoo , что создает слайдер и RangeSlider в некотором основном / корневом макете. Я хочу вызвать их метод onValueChange из ClassBar , поэтому я попытался реализовать их соответствующие OnChangeListeners (см. Slider и RangeSlider) в ClassBar

Если я попытаюсь реализовать оба, я получу ошибку компиляции:

 'onValueChange(S, float, boolean)' in 'com.google.android.material.slider.BaseOnChangeListener' clashes with 'onValueChange(Object, float, boolean)' in '[mypackagenamehere]'; both methods have same erasure, yet neither overrides the other
 

После попытки реализовать каждый из них по отдельности, появляется Slider.OnChangeListener.onValueChange Slider объект, как во входном аргументе, в то время RangeSlider.OnChangeListener.onValueChange как объект принимает RangeSlider объект.

Единственное, о чем я мог подумать, это вместо этого реализовать BaseOnChangeListener упомянутое в ошибке. Похоже, это скорее общее Object , чем либо Slider или RangeSlider . Я подумал, что если я приведу Object к Slider и RangeSlider после тестирования их класса, я мог бы заставить это работать, но тогда у меня возникли проблемы с добавлением слушателя, поскольку addOnChangeListener от каждого класса ожидаются Slider.OnChangeListener RangeSlider.OnChangeListener соответственно и, а не BaseOnChangeListener .

Я ничего не вижу в документации об этом BaseOnChangeListener , поэтому предполагаю, что я не должен использовать его напрямую. Существует ли стандартный способ реализации как RangeSlider и Slider OnChangeListeners внутри одного класса, так и внутри одного класса, или я вынужден создавать отдельный класс для каждого вместе со всем шаблонным кодом, связанным с привязкой всего обратно ClassBar ?

Комментарии:

1. Я полагаю, что я могу обойти это, создав анонимный экземпляр слушателей и вызвав некоторые пользовательские общедоступные методы из моего экземпляра ClassBar, но это не будет распространяться на случай, когда у меня несколько слушателей.