如何在服务中访问FragmentManager?

时间:2014-06-03 22:32:25

标签: java android user-interface android-fragments android-service

我正在创建类似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));

2 个答案:

答案 0 :(得分:3)

  

我需要访问服务中的FragmentManager

这不仅不可能,而且你不需要它。 Android中没有任何内容可以通过片段完成。

例如,您似乎使用了ViewPager。您不需要使用ViewPager的片段。实际上,ViewPager本身与片段无关。两个具体的PagerAdapter实现(FragmentPagerAdapterFragmentStatePagerAdapter)碰巧使用了片段。但是完全可以创建一个不使用片段的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变量可以在服务中使用。

相关问题