【问题标题】:How to call getSupportFragmentManager() from a fragment?如何从片段中调用 getSupportFragmentManager()?
【发布时间】: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 来获取此方法。

标签: android fragment datetimepicker


【解决方案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()

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-06
          相关资源
          最近更新 更多