Добавить кнопку возврата в действие - PullRequest
1 голос
/ 29 мая 2020

Доброе утро, ребята, у меня есть код, который воспроизводит звук при запуске действия, он выполняет приветственное приветствие, однако, когда я go перехожу к другим действиям и возвращаюсь в главное меню, звук воспроизводится снова, я хотел бы заметить что когда я использую кнопку панели действий назад, у меня нет этой проблемы, но мне нужно использовать кнопку во фрагменте или действии, у меня не может быть панели действий в моем приложении

Код для воспроизведения аудио:

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

    });

Ответы [ 2 ]

2 голосов
/ 29 мая 2020

Остановите воспроизведение мультимедиа, когда вы оставите действие в onPause действия

@Override
    public void onPause() {
        super.onPause();
        play.stop();
    }

И вам не нужно перезапускать предыдущее действие нажатием кнопки во втором действии, вы просто нужно позвонить onBackPressed() на go для предыдущего действия.

button = view.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View view) {

       onBackPressed();
    }

});
0 голосов
/ 29 мая 2020

Это мой второй ответ.

В случае, если вам нужно перезапустить первое действие (если оно уничтожено) из второго, вы также можете использовать onSaveInstanceState(Bundle outState) для сохранения состояния воспроизведения звука в

В первом действии

@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();
    }
...