当我的应用显示对话框并按下设备的后退按钮时,我需要捕获事件。
嗯,这绝不是一个对话框。这是我的微调器的下拉列表。
我试过:
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK)
{
Toast myToast = Toast.makeText(getApplicationContext(), "back putton pressed", 1);
myToast.show();
}
// Call super code so we dont limit default interaction
super.onKeyDown(keyCode, event);
return true;
}
没有用。
我也尝试过:
public void onBackPressed()
{
Toast myToast = Toast.makeText(getApplicationContext(), "back putton pressed", 1);
myToast.show();
}
我甚至尝试过这一点。 所以上述解决方案都没有为我工作。我在stackoverflow上找到了这两个,但由于某种原因它们不适合我。 当然,当现在有对话框显示时它们会工作,但是什么时候......它们没有运行。
有什么想法吗?
所以我的
答案 0 :(得分:3)
尝试
if (keyCode == KeyEvent.KEYCODE_BACK)
{
Toast myToast = Toast.makeText(getApplicationContext(), "back putton pressed", 1);
myToast.show();
return true;
}
答案 1 :(得分:3)
检测对话框是否被取消(按下后退按钮)的一般方法是实现OnCancelListener,但不确定它是否适用于微调器!
答案 2 :(得分:2)
看到这个
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
//Handle the back button
if(keyCode == KeyEvent.KEYCODE_BACK) {
//write your code...
}
}
答案 3 :(得分:2)
试试这个......
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_BACK)
{
Toast myToast = Toast.makeText(getApplicationContext(), "back putton pressed", 1);
myToast.show();
new Handler().postDelayed(new Runnable{
public void run(){
finish();
}
}, 1000);
}
else{
// Call super code so we dont limit default interaction
super.onKeyDown(keyCode, event);
}
return true;
}
答案 4 :(得分:1)
尝试使用dismiss listener。通过按下按钮或后退键可以解除对话框并使用此监听器,您可以知道用户是否按下了按钮或后退键(您可以在对话框中侦听onClick侦听器以捕获对话框的按钮'单击)。