2013-09-23 91 views
0

我发现搜索条与媒体播放联机工作的一些代码:搜索栏不工作

@Override 
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) { 

} 

@Override 
public void onStartTrackingTouch(SeekBar seekBar) { 
    // remove message Handler from updating progress bar 
    mHandler.removeCallbacks(mUpdateTimeTask); 
} 
@Override 
public void onStopTrackingTouch(SeekBar seekBar) { 
    mHandler.removeCallbacks(mUpdateTimeTask); 
    int totalDuration = mp.getDuration(); 
    int currentPosition = utils.progressToTimer(seekBar.getProgress(), totalDuration); 

    // forward or backward to certain seconds 
    mp.seekTo(currentPosition); 

    // update timer progress again 
    updateProgressBar(); 
} 

我得到因为覆盖的错误,告诉我说,他们必须覆盖或实现超方法。当我删除它们时,我的代码会编译并运行,但seekbar与音乐播放无关,因为我可以移动它,但音乐仍在播放。

谢谢。

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mp = new MediaPlayer(); 
     seekBar = (SeekBar) findViewById(R.id.seekBar1); 
     seekBar.setOnSeekBarChangeListener(this); //this line causes an error 
     try { 
      mp.setDataSource(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getPath() + "/SpaceJam.mp3"); 
     } catch (IllegalArgumentException e) { 
      e.printStackTrace(); 
     } catch (SecurityException e) { 
      e.printStackTrace(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     try { 
      mp.prepare(); 
     } catch (IllegalStateException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 

    @Override 
    protected void onStart(){ 
     super.onStart(); 

     btnPlay = (ImageButton) findViewById(R.id.play_pause); 
     btnStop = (ImageButton) findViewById(R.id.stop); 
     songTitleLabel = (TextView) findViewById(R.id.songname); 
     songTitleArtist = (TextView) findViewById(R.id.artist); 
     songCurrentDurationLabel = (TextView) findViewById(R.id.current); 
     songTotalDurationLabel = (TextView) findViewById(R.id.total); 
     albumArt = (ImageView) findViewById(R.id.albumArt); 
     res = getResources().getDrawable(R.drawable.album_art); 
     utils = new Utilities(); 
     . . . 
} 
+2

一个简短的问题,您的类是否已经实现了“SeekBar.OnSeekBarChangeListener”。如果没有,你需要实现它并带回@override注释。 – prijupaul

+0

另外,你能展示一些围绕这些重写方法的代码吗? – kabuto178

+0

当我添加“seekBar.setOnSeekBarChangeListener(this);”,我得到的错误:类型SeekBar中的方法setOnSeekBarChangeListener(SeekBar.OnSeekBarChangeListener)不适用于参数(MainActivity) –

回答

1

正如prijupaul提到的,您必须实施OnSeekBarChangeListener。更改您的代码如下:

public class MainActivity extends Activity implements OnSeekBarChangeListener 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

      ... 
      seekBar.setOnSeekBarChangeListener(this); 
      ... 
    } 

    @Override 
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) { 

    } 

    @Override 
    public void onStartTrackingTouch(SeekBar seekBar) { 

    } 

    @Override 
    public void onStopTrackingTouch(SeekBar seekBar) { 

    } 
}