2016-02-03 2 views
0

Я хочу, чтобы мое приложение закрывалось, когда я нажимаю кнопку Back на MainActivity. В настоящее время, когда я нажимаю его на MainActivity, он возвращается к предыдущей активности.Закрыть приложение в onBackPressed() MainActivity

+1

возможно дубликат http://stackoverflow.com/q/10865415/485695? – gar

ответ

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