[英]How to fix 'MediaPlayrer mp = new Mediaplayer.create(this, R.raw.filename.mpr) ' as create is with red as a error
[英]Error with mediaPlayer.create(this, R.raw.sound) when not in onCreate
我正在開發一個基本上是音樂庫的應用程序,對於每首歌曲,當你按下按鈕播放時,歌曲開始播放。 目前,我的圖書館有3個項目,我正在嘗試播放“sound.mp3”,這是res / raw,其中3個(目前)。
我的問題是當我嘗試引用剪輯時,我在“this,R.raw.sound”下面有一個紅色下划線。 我看到在大多數情況下,在onCreate中調用“create”,但在我的情況下,這個類不是一個活動所以我不能這樣做......
你能幫助我嗎? :)
public class ClipsAdapter extends RecyclerView.Adapter<ClipsAdapter.MyViewHolder> {
private final List<Clips> clip2 = Arrays.asList(
new Clips("Clip 1", "Artist 1"),
new Clips("Clip 2", "Artist 2"),
new Clips("Clip 3", "Artist 3")
);
public class MyViewHolder extends RecyclerView.ViewHolder {
private final TextView title;
private final TextView author;
private final ImageView play;
private Clips currentClip;
MediaPlayer mediaPlayer = new MediaPlayer();
public MyViewHolder(final View itemView) {
super(itemView);
title = ((TextView) itemView.findViewById(R.id.title));
author = ((TextView) itemView.findViewById(R.id.author));
play = ((ImageView) itemView.findViewById(R.id.play));
}
public void display(RandomClips RandomClip) {
currentRandomClip = RandomClip;
title.setText(RandomClip.title);
author.setText(RandomClip.author);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "Play clip: " + currentClip.title);
mediaPlayer.create(this, R.raw.sound);
if (mediaPlayer.isPlaying())
{
mediaPlayer.stop();
mediaPlayer.reset();
Log.d(TAG, currentRandomClip.title + " has stopped");
}
else
{
mediaPlayer.start();
Log.d(TAG, currentRandomClip.title + " is playing");
}
}
});
}
}
}
mediaPlayer.create()請求上下文和要播放的文件。 您作為參數傳遞的'this'不是Context(您在匿名類中),因此您會收到錯誤。
你應該傳遞一個上下文。 在實例化ClipsAdapter時,只需傳遞活動的上下文。
所以在你的活動實例化你的適配器:
clipsAdapter = new ClipsAdapter(this);
在ClipsAdapter類中,使用一個參數創建構造函數:
public ClipsAdapter(YourActivity activity) {
this.activity = activity;
}
最后:
mediaPlayer.create(activity, R.raw.sound);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.