Android 向TabActivity发送向下键

Android 向TabActivity发送向下键,android,events,exit,keydown,Android,Events,Exit,Keydown,在我的应用程序中,我的TabActivity中有4个选项卡。当用户退出我的应用程序时,我希望弹出一个用户确认对话框 我已覆盖了TabActivity的onKeyDown事件,并对我的需求进行了编码,但结果与预期不符,即当用户退出时不会出现弹出窗口,但当我覆盖我的子选项卡的key down时,需求已完全满足 是的,我可以简单地为我的所有子选项卡复制粘贴onKeyDown代码,但是否有最佳做法,可能是我可以将onKeyDown发送到我的选项卡活动 代码如下: @Override pu

在我的应用程序中,我的
TabActivity
中有4个选项卡。当用户退出我的应用程序时,我希望弹出一个用户确认对话框

我已覆盖了
TabActivity
onKeyDown
事件,并对我的需求进行了编码,但结果与预期不符,即当用户退出时不会出现弹出窗口,但当我覆盖我的子选项卡的key down时,需求已完全满足

是的,我可以简单地为我的所有子选项卡复制粘贴
onKeyDown
代码,但是否有最佳做法,可能是我可以将
onKeyDown
发送到我的选项卡活动

代码如下:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode == KeyEvent.KEYCODE_BACK) {
        new AlertDialog.Builder(this)
        .setTitle("Confirm Quit")
        .setMessage("Really Quit ?")
        .setPositiveButton("OK", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {

            }

        })
        .setNegativeButton("Wait!", null)
        .show();

        return true;
    }
    else {
        return super.onKeyDown(keyCode, event);
    }

}
您必须重写方法

编辑:似乎您使用的是1.6,其中没有
onBackPressed


我认为您必须像在示例中一样重写onKeyUp(…)

我就是这样做到的

在我的
TabActivity
中,我创建了一个静态方法来处理来自子选项卡的所有调用

public static boolean hanndleChildBackButtonPress(final Activity activity,int keyCode, KeyEvent event){

    if(keyCode == KeyEvent.KEYCODE_BACK) {
            //HANDLING MY ON KEY DOWN LOGIC
            return true;
    }
    else {
            return false;
    }

}
在我的子选项卡中,我从
TabActivity

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
     if(MyTabActivity.hanndleChildBackButtonPress(this, keyCode, event)) {
            return true;
        }
        else {
            return super.onKeyDown(keyCode, event);
        }

}

您可以在Tabactivity的子活动中重写onKeyDown方法,如下所示,以避免子活动使用KeyEvent.KEYCODE\u BACK

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
            return false;
        } else {
            return super.onKeyDown(keyCode, event);
    }
}

我被限制在Android 1.6上,即使这样也不能用于TabActivity!是的,此方法来自2.0:(在键向上时导致完成TabActivity,然后要求用户确认,这是毫无意义的:(
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
            return false;
        } else {
            return super.onKeyDown(keyCode, event);
    }
}