2012-03-27 31 views
0

我需要捕捉事件,当我的应用程序显示对话框,并按下设备的后退按钮。当显示对话框/微调列表时,抓住android的后退按钮按下事件?

那么它不是一个对话框。这是我的微调列表的下拉列表。

我tryed:

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; 
} 

没有奏效。

我也tryed:

public void onBackPressed() 
{ 


    Toast myToast = Toast.makeText(getApplicationContext(), "back putton pressed", 1); 
    myToast.show(); 

} 

我即使压倒一切tryed这一点。 所以没有上述解决方案为我工作。我在stackoverflow上找到了这两个,但由于某些原因,他们不适合我。 当然,他们的工作时,现在有对话显示,但什么时候......他们没有运行。

任何想法?

所以我

+0

什么也没有用第一代码片段工作? – Mayank 2012-03-27 06:57:45

回答

3

尝试

if (keyCode == KeyEvent.KEYCODE_BACK) 
{ 

    Toast myToast = Toast.makeText(getApplicationContext(), "back putton pressed", 1); 
    myToast.show(); 
    return true; 
} 
+0

为什么你复制相同的代码,如果我标记它不工作? – 2012-03-27 09:33:36

+2

返回true应该在KEYCODE_BACK – user936414 2012-03-27 09:39:27

2

看到这个

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     //Handle the back button 
     if(keyCode == KeyEvent.KEYCODE_BACK) { 
      //write your code... 
     } 
    } 
+0

为什么你复制相同的代码,如果我标记它不工作? – 2012-03-27 09:33:24

1

尝试使用解雇听众。可以通过按下按钮或返回键并使用此侦听器来解除对话框,您可以知道用户是否按下了按钮或返回键(您可以侦听对话框上的onClick侦听器以捕获对话框的按钮“单击”)。

+0

它是一个spinners下拉菜单我如何添加dismiss监听器? – 2012-03-27 09:35:21

3

的一般方法来检测一个对话框已被取消(后退按钮按下)是实施OnCancelListener,真的不知道,如果它适用于纺织,但!

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; 
    } 
+0

里面我不能等待事件1秒后:( – 2012-03-27 09:34:17

相关问题