在活动中添加后退按钮
Posted
技术标签:
【中文标题】在活动中添加后退按钮【英文标题】:Add a back button in activity 【发布时间】:2020-09-16 23:55:14 【问题描述】:早上好,伙计们,我有一个代码在活动开始时播放音频,它执行欢迎问候,但是当我去其他活动并返回主菜单时,音频再次播放我想注意的是,当我使用后退操作栏按钮我没有这个问题,但是我需要在片段或活动中使用按钮,我的应用程序中不能有操作栏
播放音频的代码:
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);
);
【问题讨论】:
【参考方案1】:当您离开 Activity 的 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();
);
【讨论】:
我在activity中使用了这个方法,效果很好,非常感谢,但是这个方法不能直接应用到fragment上,我试过了还是不行【参考方案2】:这是我的第二个答案。
如果您必须从第二个活动重新启动第一个活动(如果它被破坏),
你也可以使用onSaveInstanceState(Bundle outState)
保存 Activity 中的音频播放状态。
在第一个活动中
@Override
public void onSaveInstanceState(Bundle outState)
outState.putBoolean("isPlayed",true);
super.onSaveInstanceState(outState);
在onCreate()
的第一个活动中
@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)
Intent intent1 = new Intent(getContext(), MainActivity.class);
startActivity(intent1);
);
不要忘记在第一个活动中停止音频播放。
@Override
public void onPause()
super.onPause();
play.stop();
【讨论】:
以上是关于在活动中添加后退按钮的主要内容,如果未能解决你的问题,请参考以下文章