我可以@Override一个android方法来改变参数类型吗?

时间:2011-05-26 21:04:37

标签: android methods override

这是代码最初的样子:

@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

有谁知道我怎么能做到这一点?

3 个答案:

答案 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。或者你可以完全定义一个不同的界面。