在活动中添加后退按钮

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();
    

【讨论】:

以上是关于在活动中添加后退按钮的主要内容,如果未能解决你的问题,请参考以下文章

工具栏 - 只有一个活动从抽屉切换到后退按钮

覆盖Android中顶部菜单问题的后退按钮事件

如何摆脱Android应用栏中的后退按钮

删除后按后退按钮更新购物车计数

在布局中添加前进和后退按钮

Flutter 中的设备后退按钮覆盖