Java 如何访问服务中的FragmentManager?
我正在创建类似Facebook聊天头的东西,我需要访问服务中的FragmentManager。很多人会说我不能这么做,但总有办法,所以我问你们,我如何从服务中访问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)
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
实例调用它(如果使用嵌套片段,则为片段)。