Fragment回调Activity的事件分发
做的項目中有個功能通過事件分發dispatchTouchEvent()點擊輸入框以外關閉鍵盤,Activity中能夠正常調用,到了Fragment發現不能調用這個方法了,網上查了資料發現Fragment中是沒有dispatchTouchEvent()事件分發的,所以只能通過回調Activity的事件分發來實現這個功能了。
1、Activity
1-1接口
public interface MyTouchListener {
void onTouchEvent(MotionEvent event);
}
// 保存MyTouchListener接口的列表
private ArrayListmyTouchListeners =new ArrayList<>();
1-2提供給Fragment通過getActivity()方法來注冊自己的觸摸事件的方法
public void registerMyTouchListener(MyTouchListener listener) {
myTouchListeners.add(listener);
}
1-3 提供給Fragment通過getActivity()方法來取消注冊自己的觸摸事件的方法
public void unRegisterMyTouchListener(PledgeLoanActivity.MyTouchListener listener) {
myTouchListeners.remove(listener);
}
1-4 重寫事件分發方法
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
for (MyTouchListener listener :myTouchListeners) {
listener.onTouchEvent(ev);
} 復制代碼return super.dispatchTouchEvent(ev);
}
2、Fragment
// 將myTouchListener注冊到分發列表
((MainActivity)this.getActivity()).registerMyTouchListener(myTouchListener);
ps:通過事件分發dispatchTouchEvent()點擊輸入框以外關閉鍵盤
https://www.jianshu.com/p/bade77d6e305
總結
以上是生活随笔為你收集整理的Fragment回调Activity的事件分发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++函数的一些特性
- 下一篇: 特征值 与特征向量(机器学习算法原理与实