8

我正在开发我的一个 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 本身,但是,我遇到的问题是我无法getSupportFragmentManager()在 CustomView 中获取 FragmentManager 的实例(通过使用)。我的计划是可能的,还是我应该坚持我正在工作的代码?我这样做是为了让我的代码看起来更简洁、更容易理解。

4

1 回答 1

16

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

所以应该这样做。

android.support.v4.app.FragmentActivity fragmentActivity = (android.support.v4.app.FragmentActivity) getContext();
FragmentManager fm = fragmentActivity.getSupportFragmentManager();
于 2013-08-05T15:42:44.803 回答