我的Android应用程序中有一个非常奇怪的问题。该应用程序包含几个片段,其中一个包含一个surfaceView。使用surfaceview更改为片段的最佳时间效果很好,但有时替换是不成功的。然后,如果我触摸surfaceview,后面的片段会收到touchevents而不是实际的片段。
但这有时只会发生,而不是总是发生。所以我找到原因真的很难。 有没有人有相同或类似的问题?
替换我使用以下代码的片段:
Fragment fragment = new Fragment();
fragment.setArguments(bundle);
ft.replace(R.id.frame_container, fragment).addToBackStack(null).commit();
答案 0 :(得分:0)
听起来你的表面视图没有被告知对触摸事件作出反应。
尝试使用android:clickable="true"
或setClickable(true)
进行点击。这应该可以防止触摸事件通过表面视图到下面的片段。
我使用的另一个技巧是,对于不需要响应触摸的视图,但确实需要阻止事件通过它们,是添加触摸侦听器并吃掉事件:
surfaceView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true; // true means the event has been processed
}
});