我有一些在 MainActivity 中播放声音的方法。
它们看起来像这样,而且工作得很好。
public void hydrogen(){
final MediaPlayer mp = MediaPlayer.create(this, R.raw.hydrogen);
mp.start();
}
我想我应该将它们转移到一个类中,这样我就可以在其他活动中使用这些方法。
这就是我在课堂上的内容:
导入 android.media.MediaPlayer;
public class Sounds {
void hydrogen(){
final MediaPlayer mp = MediaPlayer.create(this, R.raw.hydrogen);
mp.start();
}
}
我在“this”和 R.raw.Hydrogen 下看到红色下划线。
当我使方法静态时,氢下的线条消失,但我无法摆脱“this”下的线条。
我做错了什么?
错误信息是:
无法解析方法“create(com.xxmassdeveloper.lrwhack2.Sounds, int)”
MediaPlayer.create(Context context, int resid)
的第一个参数消耗Context
。
如果您查看
Activity
类,它会扩展 Context
。因此,在你的Activity
类的函数中,你可以使用this
,它指的是你所在的Activity
类。
而对于你的班级
Sounds
来说,它只是一个简单的班级,与Context
没有任何关系。所以你需要将 Context
传递到这个类中,如下所示:
public class Sound {
// Create a local variable Context so that you can access it in functions of this Class
private Context context;
// Create a constructor with Context
public Sound(Context context) {
this.context = context;
}
void hydrogen() {
final MediaPlayer mp = MediaPlayer.create(context, R.raw.colors);
mp.start();
}
}
然后您可以将传递的
Context
用于您的函数。