0

答えを探しています。usep がデバイスの「戻る」または「ホーム」ボタンを押したときに MediaPlayer を閉じるにはどうすればよいですか。

戻る/ホームまたは...を押すとエラーが発生しますホームを押すとすべて問題ありませんが、アプリの復元時にエラーが発生します。誰かがそれを手伝ってくれますか、私は動作するコードを見つけることができません:(?

これが私のコードです:

package com.gwynbleiddesign.dzwiekizwierzat;

import android.media.MediaPlayer;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Typeface;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;



public class AnimalDescription extends Activity {

    ImageView animalImage;
    TextView txtNazwa, txtOpisZwierzecia;
    int selectedAnimal = 0;
    MediaPlayer mPlayer = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_animal_description);

        Typeface segoeFont=Typeface.createFromAsset(getAssets(),"fonts/segoeprb.ttf");


        txtNazwa = (TextView)findViewById(R.id.txtAnimalName);
        txtNazwa.setTypeface(segoeFont);
        txtOpisZwierzecia = (TextView)findViewById(R.id.txtAnimalDescription);
        txtOpisZwierzecia.setTypeface(segoeFont);
        animalImage = (ImageView)findViewById(R.id.imgAnimalPhoto);

        selectedAnimal = getIntent().getExtras().getInt("selectedAnimal");

        txtNazwa.setText(dane.nazwy[selectedAnimal]+"");
        animalImage.setImageResource(dane.zdjecia[selectedAnimal]);

        mPlayer = MediaPlayer.create(this,dane.dzwieki[selectedAnimal]);

        animalImage.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

        mPlayer.start();    
            }
        });
    }
     @Override 
        public void onBackPressed(){  
              mPlayer.reset();
              mPlayer.release();
              mPlayer = null;
              super.onBackPressed();
        }

     @Override 
        public void onPause(){

              //mPlayer.reset();
              mPlayer.release();
              mPlayer = null;
              super.onPause();
        }

     @Override 
        public void onStop(){


              mPlayer.reset();
              mPlayer.release();
              mPlayer = null;
              super.onStop(); 
        }
}
4

1 に答える 1

0

onCreateアプリを初めて実行すると、このメソッドが呼び出されます。それを閉じて再度開いた場合 (そして JVM がメモリを解放しなかった場合)onCreateは再度呼び出されないため、アクティビティが閉じられたときにトリガーされたためMediaPlayerです。nullonPause

Android アクティビティのライフサイクルを確認MediaPlayerし、初期化しますonResume

Logcat次回も投稿お願いします

于 2013-10-18T00:22:41.877 に答える