2011-05-26 57 views
0

這是什麼代碼最初的樣子:可以@Override android方法來改變參數類型嗎?

@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

沒有人知道我能做到這一點嗎?

回答

1

不,您不能在重寫方法中更改類型。

如果你需要浮點數可以傳遞乘以例如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

你不能這麼做 - 當你改變參數類型時,你不會重寫同一個方法 - 你重載了它。在致電onProgressChanged之前,您可以將float投射到int

0

您無法更改類型。編譯器理解你的方法(SeekBar,float,boolean)與(SeekBar,int,boolean)完全不同的方法。

它給出的錯誤指導您實現在基類/接口中定義的缺少方法。

您可以(但要小心)更改您的類實現的原始接口,以包含(SeekBar,float,boolean) - 方法。或者你可以完全定義一個不同的接口。

相關問題