这是代码最初的样子:
@Override
public void onProgressChanged (SeekBar seekBar, int progress, boolean fromUser){
...
}
我需要这样:
@Override
public void onProgressChanged (SeekBar seekBar, float progress, boolean fromUser){
...
}
然而,当我将int更改为float时,我收到错误消息The method onProgressChanged(SeekBar, float, boolean) of type new SeekBar.OnSeekBarChangeListener(){} must override or implement a supertype method
有谁知道我怎么能做到这一点?
答案 0 :(得分:1)
不,您无法更改覆盖方法中的类型。
如果你需要浮点数,你可以传递乘以例如100的int数,在你的实现中只需要除以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);
答案 1 :(得分:0)
你不能这样做 - 当你改变参数类型时,你不会重复覆盖相同的方法 - 你正在重载它。在致电float
之前,您可以将int
转换为onProgressChanged
。
答案 2 :(得分:0)
您无法更改类型。编译器将您的方法(SeekBar,float,boolean)理解为与(SeekBar,int,boolean)完全不同的方法。
它给出的错误指导您实现基类/接口中定义的缺失方法。
您可以(但要小心)更改您的类实现的原始接口,以包含(SeekBar,float,boolean)-method。或者你可以完全定义一个不同的界面。