從A fragment跳轉到B fragment ,為了返回時不從新加載A fragment內容,通常使用add方法來將a添加到后退棧.
在B Fragment 中點擊一個空白區域,如果A Fragment的該位置正好有一個可以點擊的控件,則A Fragment會響應到點擊事件,更有甚者,如果B Fragment有時候還會和A Fragment重疊顯示到一起(B Fragment 透明).
其實兩個問題都好解決:
1.重疊顯示問題:只要在Fragment的布局文件根節點設置一下backgroud就可以可,除了trasparent外都可以使兩個fragment不在重疊顯示在一起。
2.點擊穿透到上一個fragment的問題:只要在Fragment中重寫onTouch方法(Fragment要實現OnTouchListener).返回true.
@Override public boolean onTouch(View v, MotionEvent event) { return true; }
Fragment是存在於Activity中的碎片,所以Fragment的onTouch有時候響應不到(沒驗證是否是有時候響應不到,也可能是永遠響應不到,全部被Activity給攔截掉了,如果是這樣,那么上面的點擊穿透解決方案就是完全無效的)。比較保守的解決方法就是再添加一步操作,在onCreateView方法的view 里面,給view添加上onTouchListener,這樣就能讓fragment點擊的時候不再穿透到上一層的Fragment中去了
@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.activity_bs_bookstore, null); view.setOnTouchListener(this);
可以在BaseFragment中去實現方法
public class BaseFragment extends Fragment implements OnTouchListener { @Override public boolean onTouch(View v, MotionEvent event) { return true; } }
在子類中同
view.setOnTouchListener(this);
轉載地址:http://m.blog.csdn.NET/blog/z469441432/43053127
