Я хочу, чтобы мое приложение закрывалось, когда я нажимаю кнопку Back на MainActivity. В настоящее время, когда я нажимаю его на MainActivity, он возвращается к предыдущей активности.Закрыть приложение в onBackPressed() MainActivity
0
A
ответ
0
@Override
public void onBackPressed() {
YourActivity.this.finish();
}
Следует отметить, что изменение поведения по умолчанию - это не очень хорошая идея.
0
Вы можете использовать System.exit (0).
@Override
public void onBackPressed() {
System.exit(0);
}
0
Почему вы хотите, чтобы ваше приложение не возвращалось к предыдущим действиям? Если ваша MainActivity запускается из-за активности, к которой вы не хотите возвращаться, лучше добавить флаги в намерение, которое запустило MainActivity, чтобы предыдущая активность не оставалась в стеке задач.
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
Если вы не хотите, чтобы сделать это, необходимо переопределить OnBackPress(), чтобы удалить/закончить задачи под MainActivity в стеке. Это может быть сделано с помощью LocalBroadcaster, хотя его довольно уродливое.
В своей деятельности вы хотите закрыть:
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
};
@Override
protected void onResume() {
super.onResume();
IntentFilter filter = new IntentFilter("Your filter");
LocalBroadcastManager.getInstance(this).registerReceiver(broadcastReceiver, filter);
}
@Override
protected void onDestroy() {
super.onDestroy();
LocalBroadcastManager.getInstance(this).unregisterReceiver(broadcastReceiver);
}
В вашем MainActivity:
@Override
public void onBackPressed() {
Intent intentBroadcast = new Intent("Your filter");
LocalBroadcastManager.getInstance(MainActivity.this).sendBroadcast(intentBroadcast);
finish();
}
возможно дубликат http://stackoverflow.com/q/10865415/485695? – gar