在显示对话框/微调器的列表时捕获android的后退按钮事件?

时间:2012-03-27 06:51:59

标签: android button dialog back

当我的应用显示对话框并按下设备的后退按钮时,我需要捕获事件。

嗯,这绝不是一个对话框。这是我的微调器的下拉列表。

我试过:

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上找到了这两个,但由于某种原因它们不适合我。 当然,当现在有对话框显示时它们会工作,但是什么时候......它们没有运行。

有什么想法吗?

所以我的

5 个答案:

答案 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侦听器以捕获对话框的按钮'单击)。