今天在写android程序时遇到一个问题,一个ActivityGroup包含N个Activity,当点击返回键时询问是否退出程序,开始程序是这样写的:
public class MainActivity extends ActivityGroup {
//其他代码……
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("提示");
builder.setMessage("确定要退出?");
builder.setPositiveButton(R.string.confirm, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.create().show();
return true;
}else{
return super.onKeyUp(keyCode, event);
}
}
}
结果一按返回键,程序就退出了。
后来经过查找资料,应该修改为捕获onKeyDown事件
然后需要在子activity中添加如下代码
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
return getParent().onKeyDown(keyCode, event);
}else{
return super.onKeyDown(keyCode, event);
}
}
有什么不对的地方,还望高手指教