如何将Activity.class(this)传递给方法? (Android)

时间:2020-04-03 21:31:17

标签: java android android-activity

在MainActivity课堂上,我有这个播放音乐的小功能

MediaPlayer player1;
if(player1 == null){
            player1 = MediaPlayer.create(this, R.raw.song1);
            player1.start();
        }

它工作得很好,但是我也想将其用于其他活动,所以我创建了MusicPlayer类

MediaPlayer player;

    public void play(Context c, @RawRes int sound){
        if (player == null){
            player = MediaPlayer.create(c, sound);
        }
        player.start();
    }

所以我要做的是将R.raw.song传递给play()方法。我可以通过参数@RawRes int sound

传递它

我的问题是,我怎么能通过this

我在MainActivity类中尝试过

MusicPlayer playboy;

playboy.play(this, R.raw.song1);

但是我得到一个错误:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.japan, PID: 32764
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.japan/com.example.japan.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.example.japan.Helper.MusicPlayer.play(android.content.Context, int)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3333)

我还尝试传递MainActivity.this,但存在相同的错误。 我在做什么错了?

1 个答案:

答案 0 :(得分:0)

您需要首先创建MusicPlayer对象。在您的MainActivity类中尝试此代码

MusicPlayer playboy = new MusicPlayer();
playboy.play(this, R.raw.song1);
相关问题