在 activity 中添加后退按钮
Add a back button in activity
早上好,伙计们,我有一个代码可以在 activity 启动时播放音频,它会执行欢迎问候语,但是当我去其他活动并 return 进入主菜单时,音频再次播放我想注意到当我使用后退操作栏按钮时我没有这个问题,但我需要使用片段中的按钮或activity,我不能有操作栏在我的应用程序中
播放音频的代码:
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);
}
});
当您在 Activity
的 onPause
中离开 activity 时停止媒体播放
@Override
public void onPause() {
super.onPause();
play.stop();
}
而且你不需要在第二个 activity 中点击按钮重新启动上一个 activity,你只需要调用 onBackPressed()
转到上一个 activity.
button = view.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onBackPressed();
}
});
这是我的第二个回答。
如果你必须从第二个重新启动第一个activity(如果它被摧毁),
你也可以使用 onSaveInstanceState(Bundle outState)
将音频播放状态保存在 activity.
第一个activity
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putBoolean("isPlayed",true);
super.onSaveInstanceState(outState);
}
在onCreate()
的第activity
@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);
}
}
稍后,您可以从第二个 activity 重新启动第一个 activity。
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);
}
});
不要忘记在第一个 activity 中停止音频播放。
@Override
public void onPause() {
super.onPause();
play.stop();
}
早上好,伙计们,我有一个代码可以在 activity 启动时播放音频,它会执行欢迎问候语,但是当我去其他活动并 return 进入主菜单时,音频再次播放我想注意到当我使用后退操作栏按钮时我没有这个问题,但我需要使用片段中的按钮或activity,我不能有操作栏在我的应用程序中
播放音频的代码:
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);
}
});
当您在 Activity
的onPause
中离开 activity 时停止媒体播放
@Override
public void onPause() {
super.onPause();
play.stop();
}
而且你不需要在第二个 activity 中点击按钮重新启动上一个 activity,你只需要调用 onBackPressed()
转到上一个 activity.
button = view.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onBackPressed();
}
});
这是我的第二个回答。
如果你必须从第二个重新启动第一个activity(如果它被摧毁),
你也可以使用 onSaveInstanceState(Bundle outState)
将音频播放状态保存在 activity.
第一个activity
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putBoolean("isPlayed",true);
super.onSaveInstanceState(outState);
}
在onCreate()
的第activity
@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);
}
}
稍后,您可以从第二个 activity 重新启动第一个 activity。
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);
}
});
不要忘记在第一个 activity 中停止音频播放。
@Override
public void onPause() {
super.onPause();
play.stop();
}