我正在创建类似Facebook Chat Heads的东西,我需要访问服务中的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));
答案 0 :(得分:3)
我需要访问服务中的FragmentManager
这不仅不可能,而且你不需要它。 Android中没有任何内容可以仅通过片段完成。
例如,您似乎使用了ViewPager
。您不需要使用ViewPager
的片段。实际上,ViewPager
本身与片段无关。两个具体的PagerAdapter
实现(FragmentPagerAdapter
和FragmentStatePagerAdapter
)碰巧使用了片段。但是完全可以创建一个不使用片段的PagerAdapter
实现。并且,实施与PagerAdapter
一起使用的Views
比以某种方式将FragmentManager
- 与活动生命周期不可分割地捆绑在一起 - 变成{Service
所花费的时间要少得多。 {1}}。
答案 1 :(得分:-1)
在main_activity中声明并将片段管理器初始化为静态;
public static FragmentManager fm;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity);
fm = getFragmentManager();
}
fm变量可以在服务中使用。