Android бесконечный цикл активности
Здравствуйте, у меня есть небольшая проблема, которая в моем приложении выглядит как петля
На изображении, которое я предоставил, вы можете видеть два действия с одной кнопкой каждое. Когда нажата кнопка 1, вы переходите ко второму упражнению, а когда нажата кнопка 2, вы переходите к первому, которое идеально. Проблема в том, что если бы я постоянно нажимал на эти кнопки для перемещения между ними, то большой набор действий создавался бы как линия, а при нажатии кнопки назад вы автоматически перемещались по всем открытым действиям.
Мой вопрос заключается в том, чтобы реализовать метод onDestroy, и если да, то как это сделать?
Могу ли я переопределить кнопку "Назад", чтобы сразу вернуться к первому заданию, и больше нет?
4 ответа
Реализуйте намерения, как показано ниже:
Intent intent = new Intent(getApplicationContext(), Home.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
при открытии нового действия предыдущее действие будет закрыто.
Мой вопрос заключается в том, чтобы реализовать метод onDestroy, и если да, то как это сделать?
Вы можете вызывать finish() всякий раз, когда переходите к следующему действию
Intent intent = new Intent(Activity1.this, Activity2.class);
startActivity(intent);
finish();
Intent intent = new Intent(Activity2.this, Activity1.class);
startActivity(intent);
finish();
Могу ли я переопределить кнопку "Назад", чтобы сразу вернуться к первому заданию, и больше нет?
В Activity2
, ты можешь позвонить onBackPressed
в onClick
лайк
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onBackPressed();
}
});
}
@Override
public void onBackPressed(){
// do what ever you want before you back to previous activity
super.onBackPressed();
// call super.onBackPressed(); or finish();
}
Допустим, вы собираетесь на второй вид деятельности, используя следующие
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent to_second=new Intent(FirstActivity.this,SecondActivity.class);
startActivity(to_second);
}
});
Теперь во втором упражнении сделайте следующее
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
button2 завершит ваше второе действие и возобновит ваше первое действие снова, и вы можете снова нажать на кнопку1, чтобы открыть второе действие, и круг продолжится.
Ну, вы можете сделать оба мероприятия launchMode="singleInstance"
в вашем AndroidManifest
, Хотя вы можете отправить что-то через onNewIntent()
звонки.
Не звони super.onBackPressed()
потому что это вызывает finish()
чтобы быть вызванным, просто начните другую деятельность.
Вы можете использовать это решение, если вам не нужно воссоздавать действия, в противном случае используйте CLEAR_TOP и т. Д.