显示Dialog片段时未调用Android dispatchKeyEvent [英] Android dispatchKeyEvent not called when Dialog fragment is show

查看:388
本文介绍了显示Dialog片段时未调用Android dispatchKeyEvent的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我的对话框片段是 hide 时, dispatchKeyEvent 可以正常工作

when my dialog fragment is hide, dispatchKeyEvent worked fine

@Override
public boolean dispatchKeyEvent(KeyEvent event) {

    Toast.makeText(FragmentPlayer.this, "test: called", Toast.LENGTH_SHORT).show();

    return super.dispatchKeyEvent(event);

}

但是当我的对话框片段是 show 时,未调用 dispatchKeyEvent

but when my dialog fragment is show, dispatchKeyEvent not called

MyDialogFragment mFragment = new MyDialogFragment();
mFragment.show(getSupportFragmentManager(), "MyDialog");

为什么?

推荐答案

无需将您的 DialogFragment 代码更改为 Dialog ,您可以执行以下操作(以防万一仍然需要).使用 OnKeyListener 将解决您的问题.

No need to change you DialogFragment code to Dialog, you can do something like this (In case still needed). Using OnKeyListener will solve your problem.

public class BaseDialogFragment extends AppCompatDialogFragment {

  @Override
  public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    getDialog().setOnKeyListener(new DialogInterface.OnKeyListener() {
        @Override
        public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
            /* Your logic, you get the KeyEvent*/
            return false;
        }
    });
}

这篇关于显示Dialog片段时未调用Android dispatchKeyEvent的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆