1

アプリケーションでオーディオをループさせるのが好きです。ループは正常に動作していますが、ループ オーディオを停止するために On Destroy メソッドが呼び出されると、「残念ながらアプリケーションの動作が停止しています」というエラー メッセージが表示されます。停止ボタンを押してみましたが、同じエラー メッセージが表示されます。これはメディアプレーヤーの私のコードです

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_quote);
    final MediaPlayer mp1=MediaPlayer.create(QuoteActivity.this,R.raw.ohm2);
    mp1.setLooping(true);
    mp1.start();        
    }

これは私が On Destroy で与えた方法です

@Override
public void onDestroy() {       
    super.onDestroy ();{            
        if(mp1.isPlaying())  
            mp1.stop();
            mp1.release(); 
            mp1 = null;
        }

}

解決策を長い間探してみましたが、役に立ちません。誰でも私を助けることができますか?

4

1 に答える 1

2

onCreate(...)メソッド内でメディアプレーヤーを定義しています。つまり、メソッドでmp1は有効ではありませんonDestroy()。また、呼び出す前にmp1is notを確認する必要があります。nullisPlaying()

コードを次のように変更mp1します (コード例)...

public class MyActivity extends Activity {

    MediaPlayer mp1;

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

        mp1 = MediaPlayer.create(this, R.raw.ohm2);
        mp1.setLooping(true);
        mp1.start();
    }

    @Override
    public void onDestroy() {
        super.onDestroy ();
        if(mp1 != null && mp1.isPlaying()) {
            mp1.stop();
            mp1.release(); 
            mp1 = null;
        }
    }

}
于 2013-02-16T06:23:20.470 に答える