Android 从CustomView中打开DialogFragment

Android 从CustomView中打开DialogFragment,android,android-dialogfragment,Android,Android Dialogfragment,我正在做一个Android项目,试图减少我活动中的代码。在其中一个对话框中,我有一个CustomView(它只是扩展了LinearLayout),当单击它时,它会打开一个DialogFrament。现在,我实现这一点的方法是覆盖活动中的onTouch(),然后从那里打开对话框frament。它看起来像这样: @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == Moti

我正在做一个Android项目,试图减少我活动中的代码。在其中一个对话框中,我有一个CustomView(它只是扩展了LinearLayout),当单击它时,它会打开一个DialogFrament。现在,我实现这一点的方法是覆盖活动中的
onTouch()
,然后从那里打开对话框frament。它看起来像这样:

@Override
public boolean onTouch(View v, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_UP) {
        if (v.getId() == mCustomView.Id()) {
            mDialogFragment.show(mFragmentManager, "");

我想将打开DialogFragment的过程从活动转移到CustomView本身,但是,我遇到的问题是,我无法在CustomView中获得FragmentManager的实例(通过使用
getSupportFragmentManager()
)。我所计划的是可能的,还是应该坚持我所使用的代码?我这样做是为了让我的代码看起来更干净、更容易理解。

在您的自定义视图中,您可以调用
getContext()
(这将是您的活动),然后您可以将其转换到
android.support.v4.app.FragmentActivity
并从那里调用
getSupportFragmentManager()

所以这应该可以做到

android.support.v4.app.FragmentActivity fragmentActivity = (android.support.v4.app.FragmentActivity) getContext();
FragmentManager fm = fragmentActivity.getSupportFragmentManager();

非常感谢你!我还有一个问题