Android 如何在服务中访问getFragmentManager()方法?

Android 如何在服务中访问getFragmentManager()方法?,android,android-fragments,Android,Android Fragments,我有一个服务,用于将视图添加到窗口管理器。这个想法是有一些类似Facebook的聊天头。因此,即使我的应用程序没有在前台运行,视图也将始终存在 我需要添加到WindowManager的视图应该有三个选项卡。为此,我正在使用TabLayout和ViewPager 视图的xml文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/r

我有一个
服务
,用于将视图添加到
窗口管理器
。这个想法是有一些类似Facebook的聊天头。因此,即使我的应用程序没有在前台运行,视图也将始终存在

我需要添加到
WindowManager
视图应该有三个选项卡。为此,我正在使用
TabLayout
ViewPager

视图的xml文件

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:app="http://schemas.android.com/apk/res-auto"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:theme="@style/AppTheme.NoActionBar"
              android:layout_margin="20dp"
              android:background="#ff0000"
              android:layout_height="match_parent">

    <android.support.design.widget.TabLayout
        android:id="@+id/debugger_tablayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabGravity="center"
        app:tabMode="scrollable"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/debugger_pager"
        android:layout_width="match_parent"
        android:layout_height="0dp"></android.support.v4.view.ViewPager>

</LinearLayout>
现在在下面的代码行中,
DebuggerPagerAdapter
接受
FragmentManager
作为构造函数的参数。如果下面一行是在活动中编写的,那么我可以简单地取消
newdebuggerpageradapter(getFragmentManager())
,但不确定如何在服务中执行此操作

DebuggerPagerAdapter adapter = new DebuggerPagerAdapter();
DebuggerPagerAdapter的代码

    public class DebuggerPagerAdapter extends FragmentPagerAdapter  {

  public DebuggerPagerAdapter(FragmentManager fm) {
    super(fm);
  }

  @Override
  public Fragment getItem(int position) {

    switch (position){
      case 0:
        return MemoryFragment.getInstance();
      case 1:
        return NetworkFragment.getInstance();
      case 2:
        return CpuFragment.getInstance();
    }
    return null;
  }

  @Override
  public int getCount() {
    return 3;
  }
}

TIA。

片段只存在于活动中,而不存在于其他地方。您需要创建自己的不使用片段的
PagerAdapter
实现。

我有自己的PagerAdapter实现,更新了上面的代码。@thedarkpassenger:让我们试试黑体字:您需要创建自己的
PagerAdapter
实现,不使用片段。明白了。。我没有扩展FragmentPagerAdapter,而是使用了PagerAdapter。谢谢..:)如果您的应用程序没有在前台运行,则无法保证视图将在其中存在
活动
。我正在将视图添加到WindowManager,不需要活动。
    public class DebuggerPagerAdapter extends FragmentPagerAdapter  {

  public DebuggerPagerAdapter(FragmentManager fm) {
    super(fm);
  }

  @Override
  public Fragment getItem(int position) {

    switch (position){
      case 0:
        return MemoryFragment.getInstance();
      case 1:
        return NetworkFragment.getInstance();
      case 2:
        return CpuFragment.getInstance();
    }
    return null;
  }

  @Override
  public int getCount() {
    return 3;
  }
}