Java 在“活动”中添加“后退”按钮
早上好,伙计们,我有一个代码,在活动开始时播放音频,它会执行欢迎问候,但是当我转到其他活动并返回主菜单时,音频会再次播放,我想注意,当我使用后退操作栏按钮时,我没有这个问题,但我需要在片段或活动中使用按钮,我的应用程序中不能有操作栏 播放音频的代码:Java 在“活动”中添加“后退”按钮,java,android,android-studio,audio,android-activity,Java,Android,Android Studio,Audio,Android Activity,早上好,伙计们,我有一个代码,在活动开始时播放音频,它会执行欢迎问候,但是当我转到其他活动并返回主菜单时,音频会再次播放,我想注意,当我使用后退操作栏按钮时,我没有这个问题,但我需要在片段或活动中使用按钮,我的应用程序中不能有操作栏 播放音频的代码: new Timer().schedule(new TimerTask() { @Override public void run() { MediaPlayer pla
new Timer().schedule(new TimerTask() {
@Override
public void run() {
MediaPlayer play= MediaPlayer.create(MainActivity.this,R.raw.audioboatarde);
play.start();
}
}, 1000);
片段上的代码按钮:
button = view.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent1 = new Intent(getContext(), MainActivity.class);
startActivity(intent1);
}
});
当您将活动保留在活动的
onPause
中时,停止媒体播放
@Override
public void onPause() {
super.onPause();
play.stop();
}
在第二个活动中单击按钮时,不需要重新启动上一个活动,只需调用onBackPressed()
即可转到上一个活动
button = view.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onBackPressed();
}
});
button = view.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent1 = new Intent(getContext(), MainActivity.class);
startActivity(intent1);
}
});
@Override
public void onPause() {
super.onPause();
play.stop();
}
这是我的第二个答案 如果您必须将第一个活动(如果已销毁)与第二个活动重新连接, 您还可以使用
onSaveInstanceState(Bundle outState)
保存活动中的音频播放状态
button = view.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onBackPressed();
}
});
button = view.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent1 = new Intent(getContext(), MainActivity.class);
startActivity(intent1);
}
});
@Override
public void onPause() {
super.onPause();
play.stop();
}
在第一个活动中
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putBoolean("isPlayed",true);
super.onSaveInstanceState(outState);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null && savedInstaceState.getBoolean("isPlayed") == false) {
new Timer().schedule(new TimerTask() {
@Override
public void run() {
MediaPlayer play= MediaPlayer.create(MainActivity.this,R.raw.audioboatarde);
play.start();
}
}, 1000);
}
}
在第一个活动的onCreate()
中
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putBoolean("isPlayed",true);
super.onSaveInstanceState(outState);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null && savedInstaceState.getBoolean("isPlayed") == false) {
new Timer().schedule(new TimerTask() {
@Override
public void run() {
MediaPlayer play= MediaPlayer.create(MainActivity.this,R.raw.audioboatarde);
play.start();
}
}, 1000);
}
}
稍后,您可以从第二个活动重新启动第一个活动
button = view.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onBackPressed();
}
});
button = view.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent1 = new Intent(getContext(), MainActivity.class);
startActivity(intent1);
}
});
@Override
public void onPause() {
super.onPause();
play.stop();
}
不要忘记在第一个活动中停止音频播放
button = view.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onBackPressed();
}
});
button = view.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent1 = new Intent(getContext(), MainActivity.class);
startActivity(intent1);
}
});
@Override
public void onPause() {
super.onPause();
play.stop();
}
我在我的活动中使用了这个方法,非常感谢,但这个方法不能直接应用于片段,我尝试了,但没有成功