按下后退按钮时会显示两次对话框
问题描述:
在代码中,当我按下后退按钮时会显示两次对话框。任何人都可以告诉我如何只获得一次对话框?按下后退按钮时会显示两次对话框
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
onBackPressed();
}
return super.onKeyDown(keyCode, event);
}
public void onBackPressed()
{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Do you want to save configuration?");
builder.setPositiveButton
("Yes", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
//here saveConfiguration is boolean type
if (saveConfiguration())
{
dialog.dismiss();
finish();
}
else
{
dialog.dismiss();
}
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
dialog.dismiss();
finish();
}
});
builder.show();
}
}
答
你的对话框来两次,因为它消耗从返回键,即按下按键和按键两个事件了..限制,以其中任何一个..
if (event.getAction() != KeyEvent.ACTION_DOWN)
{
/* Now call onBackPressed method here */
}
答
onBackPressed()是非标准活动方法
你在做什么,是从onKeyDown手动调用这个方法,然后通过super.onKeyDown(keyCode,event)进一步通过delegateing事件再次调用它(注册,你按下并自动调用onBackPressed() );
如果您想使用按键后退按下的事件,则可以删除onKeyDown方法并仅使用onBackPressed(),或者将onBackPressed()重命名为唯一。
+0
谢谢亚历克斯,我删除了onKeyDown method.now其工作正常。 – akhil2003in 2011-05-10 09:25:43
谢谢Deepak.This方法也工作正常。 – akhil2003in 2011-05-10 09:33:32