我在主要活动上有一个操作栏图标,当您单击它时,它会播放配乐,并且我可以暂停并正确播放它。当按下操作栏播放图标时,我将其称为以下代码:
private void play() {
if (!mp.isPlaying()) {
mp.start();//play sound
play=true;
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer arg0) {
mp.seekTo(0);
}
});
} else {
mp.pause();
play=false;
}
}
onOptionsItemSelected代码:
if (id == com.app.myapp.R.id.play) {
play();
invalidateOptionsMenu();
}
我有另一个活动,带有“主页”按钮动作图标,单击该图标时,它带我回到主要活动,并且音轨继续播放,但是当我再次单击“播放”图标时,它将播放相同的另一个实例跟踪我不希望它执行的操作。我使用以下代码返回主要活动:
if (id == com.app.myapp.R.id.homebutton) {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish(); // Call once you redirect to another activity
}
要做我希望我的应用执行的操作,我还需要什么额外的代码?
任何帮助将不胜感激。
贾弗
答案 0 :(得分:0)
每次从子活动启动主要活动时,都会创建主要活动。由于要在onCreate()函数中创建mediaPlayer实例,因此将创建新的媒体播放器实例,从而导致两次回放。
修改如下所示的启动主要活动的方式。
if (id == com.app.twelveimams.R.id.homebutton) {
Log.e("kiran", "clear top from introu");
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
finish(); // Call once you redirect to another activity