【问题标题】: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);
        }

    });

【问题讨论】:

    标签: java android android-studio audio android-activity


    【解决方案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();
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-02
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多