[英]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.