繁体   English   中英

onKeyDown在TabActivity中不响应

[英]onKeyDown doesn't respond in TabActivity

我的NavActivity实现了TabActivity,并具有五个子选项卡。 当客户按下设备上的后退按钮时,我想显示一个警报对话框。 但是,正如标题可悲的那样,在这种情况下,它始终没有响应。

标题显示为“ onKeyDown”,但您无需单击“后退”按钮即可捕获标题。 只需重写您的活动的onBackPressed()方法,如下所示:

@Override 
public void onBackPressed(){
    AlertDialog ad = new AlertDialog.Builder(this)
        .setMessage("Proceed with back pressed?")
        .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener()         {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                super.onBackPressed();
            }
        })
        .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                ...
                dialog.dismiss();
            }
        })
        .create();
    ad.show();
}

调用子活动的onKeyDown方法。要调用TabActity的onKeyDown,只需通过返回this.getParent()。onKeyDown(keyCode,event)来调用子活动中的超级onKeyDown。

这是给您的代码:在子活动中:

    @Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    return this.getParent().onKeyDown(keyCode, event);
}

在您的TabActivity中,如下所示:

    @Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if(keyCode==KeyEvent.KEYCODE_BACK)
    {
        if(currenttab==0)
                 {
                    Log.e("current tab if", tabHost.getCurrentTab()+"");
        finish();
         }
         else
                 {

                  Log.e("current tab else",tabHost.getCurrentTab()+"");
          tabHost.setCurrentTab(0);
          return true; //Make sure to call return true else the onkeyDown event will be propogated to the parent method.
          }
    }
    return false;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM