Java 如何访问服务中的FragmentManager?

Java 如何访问服务中的FragmentManager?,java,android,user-interface,android-fragments,android-service,Java,Android,User Interface,Android Fragments,Android Service,我正在创建类似Facebook聊天头的东西,我需要访问服务中的FragmentManager。很多人会说我不能这么做,但总有办法,所以我问你们,我如何从服务中访问FragmentManager 在我的服务中,在onCreate方法中,我有: LayoutInflater inflater = LayoutInflater.from(this); layout = inflater.inflate(R.layout.box, null); ViewPager pager = (ViewPager)

我正在创建类似Facebook聊天头的东西,我需要访问服务中的FragmentManager。很多人会说我不能这么做,但总有办法,所以我问你们,我如何从服务中访问FragmentManager

在我的服务中,在
onCreate
方法中,我有:

LayoutInflater inflater = LayoutInflater.from(this);
layout = inflater.inflate(R.layout.box, null);
ViewPager pager = (ViewPager) layout.findViewById(R.id.pager);

FragmentManager fm = [HOW CAN I ACCESS THIS?];

pager.setAdapter(new MyPagerAdapter(fm));
我需要访问正在使用的FragmentManager

这不仅是不可能的,而且你也不需要它。Android中没有任何东西只能通过片段来完成


例如,您似乎正在使用
ViewPager
。您不需要将片段与
ViewPager
一起使用。事实上,
ViewPager
本身与片段无关。两个具体的
PagerAdapter
实现(
FragmentPagerAdapter
FragmentStatePagerAdapter
)恰好使用了片段。但是完全可以创建一个不使用片段的
PagerAdapter
实现。而且,实现与
视图
一起工作的
PagerAdapter
所需的时间将大大少于将
片段管理器
(与活动生命周期密不可分)塞进主活动中的
服务

中,声明并将片段管理器初始化为静态

public static FragmentManager fm;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);

    fm = getFragmentManager();

}

fm变量可在服务中使用。

无法将FragmentManager放入service@Damian你是如何解决你的问题的?请分享你的代码,使用相同的问题,非常感谢你,不必创建碎片救了我:)@Commons,我不认为你的观点在所有情况下都是有效的。例如,如果我想在一项服务中使用谷歌地图,我就不能这样做。现在你可能会想,为什么我需要谷歌地图的服务。这是因为我正在开发一个没有活动的键盘应用程序,我想要一个需要getFragmentManager()的谷歌地图功能。@DEEPANKURSADANA:欢迎您尝试。在服务或应用程序中访问FragmentManager(有上下文但没有活动)是完全合理的为了使用enableDebugLogging()(例如)。不知道问题的有效原因并不意味着问题是无效的。@Graeme:“想要在服务或应用程序中访问FragmentManager是完全合理的”--不是真的。“为了使用enableDebugLogging()”--由于文档没有说明该方法的效果范围,您应该假设它只影响调用它的
FragmentManager
的特定实例。因此,您应该为每个活动中的
FragmentManager
实例调用它(如果使用嵌套片段,则为片段)。