从CustomView中打开DialogFragment

时间:2013-08-05 15:31:03

标签: android android-dialogfragment

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

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

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

1 个答案:

答案 0 :(得分:11)

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

所以这应该做到。

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