#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, но это не будет распространяться на случай, когда у меня несколько слушателей.