不知道大家有没有发现,在弹出了dialog的情况下,Activity中很多的系统事件监听方法都是无效的,据网上的说法是因为弹出dialog后,dialog获得了焦点,而Activity失去了焦点的原因,具体是否为真未敲代码验证。下面想说的是,在弹出了dialog的情况下,我们应该怎样使Activity中的系统事件监听方法有效。
方法一:
首先,我们第一能想到的方式肯定会是接口回调的方式,如:
private OnKeyDownEventListener eventListener; public void setOnKeyDownEventListener(OnKeyDownEventListener listener){ this.eventListener = listener; } @Override public boolean onKeyDown(int keyCode, @NonNull KeyEvent event) { if (eventListener != null){ return eventListener.onKeyDown(keyCode,event); } return super.onKeyDown(keyCode, event); } public interface OnKeyDownEventListener{ boolean onKeyDown(int keyCode, @NonNull KeyEvent event); }
方法二:
除了方法一,我们也可以有一种更简单的方式去实现,就是透传,将di