永发信息网

Android中按返回键怎么退出一个用程序

答案:7  悬赏:10  手机版
解决时间 2021-11-23 10:58
Android中按返回键怎么退出一个用程序
最佳答案
重写activty的onkeydown在用户按下返回键的时候调用,所以我们可以通过重写onkeydown的方法实现,还有可能到了MainActivity前面还有其他acitivty存活这,我们需要在onkeydown的时候把所有的activity都结束掉,为了实现这个我们先定义一个BaseActivity,在Oncreate和ondestroy生命周期里存储acitivty的引用
用一个List集合存储存活的acitivity,我们把list作为application成员
写一个MyApp类,作为程序启动的application

public class MyApp extends Application{
private List activities = new ArrayList();
public List getActivities(){
return activities;
}
}

BaseActivity代码如下
class BaseActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((MyApp)getApplication()).getActivities().add(this);
}

@Override
protected void onDestroy() {
super.onDestroy();
((MyApp)getApplication()).getActivities().remove(this);
}

}

以后工程里的所有Activity都继承于BaseActivity即可

最后是MainAcitivty的代码,在onkeydown方法里遍历list集合,调用每个activity的finish方法即可

public class MyActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_two);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
List activities = ((MyApp)getApplication()).getActivities();
for(Activity activity:activities){
activity.finish();
}
return super.onKeyDown(keyCode, event);
}
}
全部回答
去任务管理器退出
按返回不是已经退出了么?
这是因为你以前的activity没有finish();
在A、B两个Activity之间跳转,A是主Activity。首先在A中实现下面的推荐答案,然后在B中跳转语句中加一句:intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
开发吗????
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
AlertDialog.Builder build=new AlertDialog.Builder(this);
build.setTitle("注意")
.setMessage("确定要退出吗?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
finish();

}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub

}
})
.show();
break;

default:
break;
}
return false;
//return super.onKeyDown(keyCode, event);

}追问那个还是不行,还是在前几个页面来回跳转?
// 捕获返回按钮事件
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { dialog(); return false; } else { return super.onKeyDown(keyCode, event); } } // 提示框 protected void dialog() { AlertDialog.Builder dialog = new AlertDialog.Builder(this); dialog.setTitle("").setIcon(android.R.drawable.ic_dialog_info) .setMessage(" 您确认退出程序吗?").setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { System.exit(0); } }).setNegativeButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel();// 取消弹出框 } }).create().show(); }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么说,男生只有真正爱过一个女生,才会在
手机的IMEI码是不是手机的识别码?
枣庄石头部落好玩吗
请问宽度14mm和18mm的键槽轴上深度是多少?谢
清酒系美男里的经典语录
珍爱青春远离犯罪800字作文
为什么人要生活在河流两岸
请问下大神,我的电脑为什么玩英雄联盟fps浮
春节在网上怎么才抢得到火车票?
什么DVD光驱好建兴好不好
轻型客车是不是属于应征消费税的汽车?
TPE食品级到底是一个什么概念
捡到蚌壳化石,蚌壳粉有什么用途吗
6月收入380000元7月收入450000元增长率多少
河南省中原内配有限公司,怎么样?
推荐资讯
八大行星,你了解多少
喝荷叶茶会不会上火,求指教啊
低含量的银水怎么提炼银?
比较(√5+1)÷2与13÷8的大小
无量的有形无形众生遍受什么意思
为啥羊肉要比猪肉贵?
为什么办理建行东航卡多下了一张普v卡
为什么无论是德 国还是美国都迫害犹太人
两个15相乘比15个200多少?
接受理解掌握转化的正确排序
“一叶轻舟”是什么意思?
2百多3百买真羊皮皮衣可能吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?