Java 未识别上下文:方法不适用于参数
我正试图在我的android应用程序中设置一个定时器,每1.5秒(一声蜂鸣)播放一次MP3文件。我有以下代码,并在下面的运行函数中收到错误“MediaPlayer类型中的方法创建(上下文,int)不适用于参数(Beep.rementTask,int)”:Java 未识别上下文:方法不适用于参数,java,android,eclipse,android-context,Java,Android,Eclipse,Android Context,我正试图在我的android应用程序中设置一个定时器,每1.5秒(一声蜂鸣)播放一次MP3文件。我有以下代码,并在下面的运行函数中收到错误“MediaPlayer类型中的方法创建(上下文,int)不适用于参数(Beep.rementTask,int)”: package com.example.timer; import java.util.Timer; import java.util.TimerTask; import android.media.AudioManager; import
package com.example.timer;
import java.util.Timer;
import java.util.TimerTask;
import android.media.AudioManager;
import android.media.MediaPlayer;
public class Beep {
Timer timer;
public Beep() {
timer = new Timer();
timer.schedule(new RemindTask(),
0, //initial delay
1*1500); //subsequent rate
}
class RemindTask extends TimerTask {
public void run() {
MediaPlayer mPlayer = MediaPlayer.create(this, R.raw.beep);
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.start();
}
}
public void main(String args[]) {
new Beep();
}
}
我不明白为什么它不适用,参数是一样的?我知道这可能与上下文有关,我不完全确定,但从这里可以看出:我知道它们在创建新对象或访问共享资源时被使用。我尝试了
getApplicationContext()
、getContext()
和getBaseContext()
,但仍然收到错误。我相信beep对象操作所需的一切都位于这个上下文中。有什么建议或想法吗 这应该可以解决您的问题:
MediaPlayer mPlayer = MediaPlayer.create(getActivity(), R.raw.beep);
您位于扩展TimerTask的类提醒任务中,当您使用
this
时,您指的是提醒任务
使用getActivity()获取活动的上下文
MediaPlayer=MediaPlayer.create(getActivity(),R.raw.beep)
要使用该方法,您应该在活动中,或者编译器应该知道上下文,或者应该知道您正在使用的活动 选项1:您可以将上下文从活动传递到此类。
选项2:您可以使用getActivity()。然后是代码您的类是一个非活动类,因此您无法直接获取上下文。从活动实例化Beep实例时,请在构造函数中传入活动的上下文 将变量添加到Beep类以保存上下文:
private Context context;
在构造函数中,存储它:
public Beep(Context context) {
this.context=context;
//the rest of your constructor code...
}
然后你可以这样做:
MediaPlayer mPlayer = MediaPlayer.create(context, R.raw.beep);
嘟嘟声。提醒任务
不是一个上下文
,是吗?不清楚为什么您希望它工作。为什么您有一个main
?