Могу ли я @ Override метод Android для изменения типов параметров? - PullRequest
0 голосов
/ 27 мая 2011

код выглядит так:

@Override
public void onProgressChanged (SeekBar seekBar, int progress, boolean fromUser){
    ...
}

Мне нужно, чтобы это было:

@Override
public void onProgressChanged (SeekBar seekBar, float progress, boolean fromUser){
    ...
}

однако, когда я изменяю int на число с плавающей точкой, я получаю сообщение о том, что The method onProgressChanged(SeekBar, float, boolean) of type new SeekBar.OnSeekBarChangeListener(){} must override or implement a supertype method

Кто-нибудь знает, как мне этого добиться?

Ответы [ 3 ]

1 голос
/ 27 мая 2011

Нет, вы не можете изменять типы в переопределенных методах.

Если вам нужны числа с плавающей запятой, вы можете передать целое число, умноженное, например, на 100, а в вашей реализации просто разделить его на 100.

@Override
public void onProgressChanged (SeekBar seekBar, int progress, boolean fromUser){
    float floatProgress = (float)progress/100f;
    ...
}

Если нет, просто приведите к int

float progress = 99.0;
onProgressChanged(seekBar, (int)progress, fromUser);
0 голосов
/ 27 мая 2011

Вы не можете изменить тип. Компилятор понимает ваш метод (SeekBar, float, boolean) как совершенно отличный от (SeekBar, int, boolean) метод.

Ошибка, которую она выдает, помогает вам реализовать отсутствующий метод, определенный в базовом классе / интерфейсе.

Вы можете (но будьте осторожны) изменить исходный интерфейс, который реализует ваш класс, чтобы включить (SeekBar, float, boolean) -метод. Или вы можете просто определить другой интерфейс.

0 голосов
/ 27 мая 2011

Вы не можете сделать это - когда вы меняете тип параметра, вы больше не переопределяете тот же метод - вы перегружаете его. Вы можете привести float к int перед вызовом onProgressChanged.

...