I am running an audio file in a fragment using the following code:
public class AudioFragment extends Fragment implements View.OnClickListener {
private Runnable runnable;
private Handler handler;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view= inflater.inflate(R.layout.fragment_audio,container,false);
btnBwd=view.findViewById(R.id.btnBwd);
btnPlay=view.findViewById(R.id.btnPlay);
seekBar=view.findViewById(R.id.seekBar);
handler=new Handler();
btnBwd.setOnClickListener(this);
btnPlay.setOnClickListener(this);
mediaPlayer = MediaPlayer.create(view.getContext(),R.raw.play);
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mediaPlayer){
seekBar.setMax(mediaPlayer.getDuration());
mediaPlayer.start();
changeSeekBar();
}
});
return view;
}
private void changeSeekBar() {
seekBar.setProgress(mediaPlayer.getCurrentPosition());
if(mediaPlayer.isPlaying()){
runnable = new Runnable() {
@Override
public void run() {
changeSeekBar();
}
};
handler.postDelayed(runnable,1000);
}
}
}
This fragment is created in another activity and when this fragment is replaced using fragmentTransaction.replace()
, the music still keeps playing for some reason. Is it because there was a Runnable
object involved. Can I send some signal to the process?
What is a good way to handle this either from my activity or the fragment itself?