我们可以在片段中覆盖dispatchTouchEvent(MotionEvent me)吗?

时间:2015-07-16 11:03:27

标签: android

当我在片段中覆盖此方法时,它显示错误,如

方法dispatchTouchEvent(MotionEvent)未定义类型Fragment

这是我创建的片段.....

public class ChatterContainerFragment extends Fragment implements
        SimpleGestureListener {
}

在这我试图覆盖......

@Override
    public boolean dispatchTouchEvent(MotionEvent me) {
        // Call onTouchEvent of SimpleGestureFilter class
        this.detector.onTouchEvent(me);
        return super.dispatchTouchEvent(me);
}

当我在FragmentActivity中覆盖时,它的工作正常。 但对于片段,它不起作用。

请帮帮我。

谢谢!

1 个答案:

答案 0 :(得分:1)

有两种方法可以做到,

1)创建视图后,您可以在片段视图上添加TouchListener。这是最简单的方法。

2)您知道片段已附加到活动,因此您可以覆盖活动中的dispatchTouchEvent方法并从中传递操作。像这样,

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    MyFragment myFragment = (MyFragment) getFragmentManager().findFragmentByTag("FRAGMENT_TAG");
    myFragment.doSomething();

    return super.dispatchTouchEvent(ev);
}

<强>更新

您需要执行此操作以从活动

访问Dragment方法
ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
fragment.<specific_function_name>();