0

戻るボタン (onBackPressed) を押したときに現在の Android MediaPlayer URL の読み込みをキャンセルし、何もなかったかのように前のアクティビティを終了できるようにしたいと考えています。これはすべて、Activity の読み込み中に発生します。onCreate には ProgressDialog 呼び出しがあります。このダイアログをキャンセルし、MediaPlayer の作成/開始をキャンセルして戻りたいです。

正しく作る方法は?

@Override
 public void onBackPressed() {
 if (pd!=null) {if (mp3Service!=null) mp3Service.reset(getApplicationContext()); pd.onBackPressed();};
 super.onBackPressed();

 }

これは機能しません。さらに、しばらくすると画面が暗くなり、APP がハングアップします。

何が問題なのですか。おそらく別のスレッドを呼び出す必要がありますか? (playSong は別のスレッドで起動します)。

4

2 に答える 2

0

ダイアログでチェックしOnCancelListenerて、ダイアログがキャンセルされたかどうかを検出することもできます。または、このようなことを試すことができます

public boolean onKeyDown(int keyCode, KeyEvent event) 
{
    if (keyCode == KeyEvent.KEYCODE_BACK)
    {
        //Do your code here for canceling your service
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

ダイアログを作成するときに、キャンセル リスナーを追加できます。

pd.setOnCancelListener(new DialogInterface.OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialog) {
                    // TODO cancel your music service 
            }
})
于 2013-07-22T19:59:10.737 に答える