如何在不扩展Activity的情况下获取片段管理器

时间:2016-04-21 19:40:21

标签: android android-fragments

我正在使用库来构建一些卡片,我的java扩展库类现在我需要在我的java类中使用FragmentManager我尝试使用内部类但是获取空指针异常

2 个答案:

答案 0 :(得分:0)

如果您有Activity引用:activity.getFragmentManager()

如果您有Fragment引用:fragment.getFragmentManager()

它们都是public方法,但您需要引用活动或片段。

此外,虽然我不推荐它,但如果您有View引用,则view.getContext()方法可能Activity ,这样你就可以通过这种方式进行投射并获得FragmentManager。但这有潜在危险,如果Android的实施发生变化,可能会随时停止工作,所以你应该真正知道自己在做什么。传递活动/片段参考确实是可行的方法。

答案 1 :(得分:0)

getFragmentManager()public的{​​{1}} non-static方法。因此要获得Activity,您需要FragmentManager的{​​{1}}。因此,即使您没有延长activity课程,也需要拥有context

另外看一下这个方法的描述,它可以解决问题。

  

返回FragmentManager以与与此活动相关联的片段进行交互。

activity

因此,如果没有context,则/** * Return the FragmentManager for interacting with fragments associated * with this activity. */ public FragmentManager getFragmentManager() { return mFragments.getFragmentManager(); } 不存在。