当我按下MainActivity上的后退按钮时,我希望我的应用关闭。目前,当我在MainActivity上按它时,它将返回上一个活动。
答案 0 :(得分:1)
为什么您希望自己的应用不再回到之前的活动? 如果您的MainActivity是由您不希望返回的活动启动的,那么最好为启动MainActivity的intent添加标志,以便之前的活动不会保留在Task-stack中。
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
如果您不想这样做,则必须覆盖OnBackPress()以删除/完成堆栈中MainActivity下的Tasks。 例如,这可以通过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();
}
答案 1 :(得分:0)
select case
when
(case
when cast(getdate() as date) = cast(dateadd(year, (datediff(year, '1996-09-09', getdate())), '1996-09-09') as date)
then dateDiff(yyyy,'1996-09-09',dateadd(year, 0, getdate()))
else dateDiff(yyyy,'1996-09-09',dateadd(year, -1, getdate()))
end) = 19
then 'Same age'
else 'Not same age'
end as AgeCompare
go
值得注意的是,更改默认行为并不是一个好主意。
答案 2 :(得分:0)
您可以使用System.exit(0)。
@Override
public void onBackPressed() {
System.exit(0);
}