Java 未识别上下文:方法不适用于参数

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

我正试图在我的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 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