【问题标题】:How to ignore 'search' key press in DialogFragment如何忽略 DialogFragment 中的“搜索”按键
【发布时间】:2012-08-08 18:43:44
【问题描述】:

我之前为我的对话框扩展了 Dialog 类,我必须在我的对话框中使用以下代码段,以便在按下手机的 search 键时它们不会被关闭:

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 存在相同的问题,即当按下手机的 search 键时(无论对话框的可取消状态如何),对话框都会被关闭。双重问题是DialogFragment 没有setOnKeyListener 方法,因此上述代码段不再适用。

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

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

【问题讨论】:

  • 尝试将您的代码放入片段活动类中。我希望通过片段活动,您的代码能够正常工作
  • 不高兴。请参阅添加到问题的注释。

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


【解决方案1】:

试试这个。
在你的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
  }
});

【讨论】:

  • 很好的答案!我试图为 Adil Hussain 找到解决方案,但就在我要发布类似的解决方案时,您发布了它!
  • 甜蜜。谢谢南迪斯。我没有意识到有一个getDialog() 方法。我以为DialogFragment 对话框!
猜你喜欢
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多