如何在DialogFragment中忽略“搜索”键按下

时间:2012-08-08 18:43:44

标签: android android-fragments android-dialog android-keypad android-dialogfragment

我之前为我的对话框扩展了Dialog类,我不得不在对话框中使用以下代码段,以便在按下手机的搜索键时不会将其解除:

setOnKeyListener(new OnKeyListener()
{
  public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event)
  {
    if (keyCode == KeyEvent.KEYCODE_SEARCH)
      return true; // pretend we've processed it
    else
      return false; // pass on to be processed as normal
  }
});

我现在使用DialogFragment类作为对话框。遗憾的是,DialogFragmentDialog存在同样的问题,因为当按下电话的搜索键时,对话框被解除(无论对话框的可取消状态如何)。双重问题是DialogFragment没有setOnKeyListener方法,因此上述代码段不再适用。

任何人都知道如何让我的对话框(显示时)忽略搜索按键?

  

注意:我尝试将上述代码段添加到我的活动onKeyUp   方法,但不幸的是我的活动的onKeyUp方法没有被调用   如果显示DialogFragment实例。相反,恼人的,   DialogFragment实例被驳回。

1 个答案:

答案 0 :(得分:15)

试试这个。
DialogFragment.Onresume

 getDialog().setOnKeyListener(new OnKeyListener()
 {
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event){
    if (keyCode == KeyEvent.KEYCODE_SEARCH)
      return true; // pretend we've processed it
    else
      return false; // pass on to be processed as normal
  }
});