前言:
在開發過程種彈出了一個Fragment之後,居然還可以點擊到前一個頁面(activity)的按鈕!!!!!坑!經過各種百度,得知這是因爲Fragment是存在於Activity的碎片,所以Fragment的onTouch的方法有時候不能完全的響應到或者根本就不可能響應到,全部讓Activity給攔截掉了,如果這樣,我們有一種比較保守的解決方法,就是再添加一步操作,在onCreateView方法中的view裏面添加OnTouchListener,這樣就能讓fragment點擊的時候不再穿透到上一層的fragment中去了,直接在當前的fragment層給消化掉了。
我們只要在fragment中重寫View.OnTouchListener的OnTouch方法將返回值改爲true就行了!該方法默認返回的時fase!
例子:
public class LoginFragment extends Fragment implements View.OnTouchListener {
@BindView(R.id.close_btn)
ImageButton close_btn;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_loging,container,false);
ButterKnife.bind(this,view);
close_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getFragmentManager().popBackStack();
}
});
view.setOnTouchListener(this);
return view;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
return true;
}
}