全局复用Layer会有问题
HarveyLee1228 opened this issue · comments
compatSoftInput处理有点问题,在remove时没有将softInputHelper置空。或者在重新调用compatSoftInput时应该重新attach,不然复用dialog会有问题
/**
* 添加到父View
*/
private void onAttach() {
if (mOnKeyListener != null) {
mChild.setFocusable(true);
mChild.setFocusableInTouchMode(true);
mChild.requestFocus();
currentKeyView = mChild;
mLayerGlobalFocusChangeListener = new LayerGlobalFocusChangeListener();
mChild.getViewTreeObserver().addOnGlobalFocusChangeListener(mLayerGlobalFocusChangeListener);
mLayerKeyListener = new LayerKeyListener();
currentKeyView.setOnKeyListener(mLayerKeyListener);
}
mParent.addView(mChild);
if (mOnLifeListener != null) {
mOnLifeListener.onAttach();
}
}
这段代码的这三句:
mChild.setFocusable(true);
mChild.setFocusableInTouchMode(true);
mChild.requestFocus();
应该放到
mLayerGlobalFocusChangeListener = new LayerGlobalFocusChangeListener();
mChild.getViewTreeObserver().addOnGlobalFocusChangeListener(mLayerGlobalFocusChangeListener);
这两句的后面,复用的layer才会继续监听返回键。
OK,抽空看看
/** * 添加到父View */ private void onAttach() { if (mOnKeyListener != null) { mChild.setFocusable(true); mChild.setFocusableInTouchMode(true); mChild.requestFocus(); currentKeyView = mChild; mLayerGlobalFocusChangeListener = new LayerGlobalFocusChangeListener(); mChild.getViewTreeObserver().addOnGlobalFocusChangeListener(mLayerGlobalFocusChangeListener); mLayerKeyListener = new LayerKeyListener(); currentKeyView.setOnKeyListener(mLayerKeyListener); } mParent.addView(mChild); if (mOnLifeListener != null) { mOnLifeListener.onAttach(); } }
这段代码的这三句:
mChild.setFocusable(true);
mChild.setFocusableInTouchMode(true);
mChild.requestFocus();
应该放到
mLayerGlobalFocusChangeListener = new LayerGlobalFocusChangeListener();
mChild.getViewTreeObserver().addOnGlobalFocusChangeListener(mLayerGlobalFocusChangeListener);
这两句的后面,复用的layer才会继续监听返回键。
已修复,更新4.1.1版本