Как передать Activity.class (this) в метод? (Android) - PullRequest
0 голосов
/ 04 апреля 2020

В моем классе MainActivity у меня есть эта маленькая функция для воспроизведения музыки c

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 голосов
/ 04 апреля 2020

Сначала вам нужно создать объект MusicPlayer. Попробуйте этот код в своем классе MainActivity

MusicPlayer playboy = new MusicPlayer();
playboy.play(this, R.raw.song1);
...