Подскажите, пожалуйста, как реализовать MediaPlayer во Fragment?
Само приложение запускается, но ни один clickListener не отрабатывает, кроме смены play/pause, этот же код переписываю в MainActivity, все работает, как быть, помогите
class MainActivity : AppCompatActivity() {
private var playScreenFragment = PlayScreenFragment.newInstance()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setupPlayScreenFragment()
}
private fun setupPlayScreenFragment() {
supportFragmentManager
.beginTransaction()
.replace(R.id.play_screen_frame_layout, playScreenFragment, PlayScreenFragment.TAG)
.commitAllowingStateLoss()
}
}
class PlayScreenFragment : Fragment() {
lateinit var mediaPlayer: MediaPlayer
var seekBarUpdateHandler = Handler()
lateinit var updateSeekBar: Runnable
companion object {
const val TAG = "PlayScreenFragment"
fun newInstance(): PlayScreenFragment {
val args = Bundle()
val playScreenFragment = PlayScreenFragment()
playScreenFragment.arguments = args
return playScreenFragment
}
}
lateinit var fragmentPlayScreenBinding: FragmentPlayScreenBinding
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
fragmentPlayScreenBinding =
DataBindingUtil.inflate(inflater, R.layout.fragment_play_screen, container, false)
return fragmentPlayScreenBinding.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
runMediaPlayer()
}
private fun runMediaPlayer() {
mediaPlayer = MediaPlayer.create(activity, R.raw.one_for_daddy)
play_image_view.setOnClickListener {
if (!mediaPlayer.isPlaying) {
mediaPlayer.start()
play_image_view.setImageResource(R.drawable.ic_pause)
} else {
mediaPlayer.pause()
play_image_view.setImageResource(R.drawable.ic_play)
}
}
back_5_image_view.setOnClickListener {
mediaPlayer.seekTo(mediaPlayer.currentPosition - 5000)
}
forward_5_image_view.setOnClickListener {
mediaPlayer.seekTo(mediaPlayer.currentPosition + 5000)
}
seekbar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener {
override fun onProgressChanged(p0: SeekBar?, p1: Int, p2: Boolean) {
if (p2) {
mediaPlayer.seekTo(p1)
}
}
override fun onStartTrackingTouch(p0: SeekBar?) {
}
override fun onStopTrackingTouch(p0: SeekBar?) {
}
})
updateSeekBar = Runnable {
seekbar.progress = mediaPlayer.currentPosition
seekBarUpdateHandler.postDelayed(updateSeekBar, 1000)
}
seekBarUpdateHandler.postDelayed(updateSeekBar, 1000)
mediaPlayer.setOnCompletionListener {
play_image_view.setImageResource(R.drawable.ic_play)
seekbar.progress = 0
}
}
}