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;
}
}