如何从片段中调用 getSupportFragmentManager()?

Posted

技术标签:

【中文标题】如何从片段中调用 getSupportFragmentManager()?【英文标题】:How to call getSupportFragmentManager() from a fragment? 【发布时间】:2015-12-15 14:18:54 【问题描述】:

我想在我的代码中使用自定义日期和时间选择器,为此我创建了一个单独的包并将所有日期和时间选择器类放在那里。 如果我从主要活动中运行代码,则代码运行顺利,但是当我想从片段调用时,它无法识别 getSupportFragmentManager() 方法 我从我的片段中拨打的电话是:

SimpleDateTimePicker simpleDateTimePicker = SimpleDateTimePicker.make(
            "Set Date & Time Title",
            new Date(),
            this,
            getSupportFragmentManager()
    );

    simpleDateTimePicker.show();

请帮忙,谢谢大家。

【问题讨论】:

getActivity().getSupportFragmentManager() 试过这个吗? 您可以直接使用 getFragmentManager() 代替 getSupportFragmentManager() 是的,但它不起作用 试过也没有运气:( 它显示错误:(106, 43) 错误: 不兼容的类型: android.app.FragmentManager 无法转换为 android.support.v4.app.FragmentManager跨度> @ManishNegi 您需要从 android.support.v4.app.FragmentActivity 扩展您的类,而不仅仅是从标准 android.Activity 来获取此方法。 【参考方案1】:

你没有

您需要从 Fragment 调用 getChildFragmentManager()。尝试调用getActivity().getSupportFragmentManager() 将引发错误。

【讨论】:

【参考方案2】:

首先检查您的frgaments 扩展自android.support.v4.app.Fragmentandroid.app.Fragment。如果是android.app.Fragment,则调用getActivity().getFragmentManager();,或者如果它从支持frgament 扩展,则调用getActivity().getSupportFragmentManager();

【讨论】:

【参考方案3】:

看起来SimpleDateTimePicker 类是你自己的类,它只接受android.app.FragmentManager,而不接受android.support.v4.app.FragmentManager。因此,您只能将该类与 API11 或更高版本一起使用。如果你想使用android.support.v4.app.FragmentManager,你需要编辑你的SimpleDateTimePicker在构造函数中接受android.support.v4.app.FragmentManager

编辑:

好的,有 2 个不同的类:android.app.FragmentManagerandroid.support.v4.app.FragmentManager。第二个是第一个的兼容性实现。大多数应用程序使用第二个,因为它允许在 API 11 之前使用。链接中的类使用第一个。有两种方法可以解决它: 第一 - 你开始使用android.app.FragmentManager 而不是android.support.v4.app.FragmentManager。它将导致应用程序仅在 api 11 以上工作。 第二种方法是将SimpleDateTimePicker 的代码更改为使用android.support.v4.app.FragmentManager。我认为这是更正确的方式。

【讨论】:

实际上我没有编写该课程的代码,我只是一个初学者,所以我从link获取代码 @ManishNegi,那么您应该花时间理解代码,而不是“按原样”使用它并尝试使用它。 好的,但我并没有得到真正的东西,最初我在另一个程序中使用了一个空白活动并且它正在工作【参考方案4】:

这对我有用

getBaseActivity().getFragmentManager()

试试看。

【讨论】:

【参考方案5】:

这对我有用:

getChildFragmentManager()

【讨论】:

以上是关于如何从片段中调用 getSupportFragmentManager()?的主要内容,如果未能解决你的问题,请参考以下文章

如何从主要活动中调用片段方法

如何从片段中调用 getSupportFragmentManager()?

如何从片段 KOTLIN 中调用意图 [重复]

如何从另一个活动中调用片段

Android:从片段调用时如何从活动中获取返回结果?

如何从Android中没有活动和片段的函数调用DialogFragment?