我有Service
用于向WindowManager
添加视图。我的想法是拥有像Facebook聊天的头脑。因此,即使我的应用程序没有在前台运行,视图也将始终存在。
我需要添加到view
的{{1}}应该有三个标签。我为此目的使用WindowManager
和TabLayout
视图的xml文件
ViewPager
在我的服务中,我在 <?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>
方法中按照以下方式对xml文件进行了充气。
onStartCommand()
现在在下面的代码行中,@Override
public int onStartCommand(Intent intent, int flag, int startId) {
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT, 200,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD,
PixelFormat.TRANSLUCENT);
LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
debuggerView = (LinearLayout) layoutInflater.inflate(R.layout.debugger_main, null);
debuggerViewPager = (ViewPager) debuggerView.findViewById(R.id.debugger_pager);
//Facing problem at this line. How to access getFragmentManager() function here ?
DebuggerPagerAdapter adapter = new DebuggerPagerAdapter();
debuggerViewPager.setAdapter(adapter);
debuggerViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(
debuggerTabLayout));
windowManager.addView(debuggerView, params);
}
接受DebuggerPagerAdapter
作为构造函数的参数。如果以下行写在一个活动中,那么我可以简单地取消FragmentManager
,但不知道如何在服务中执行此操作?
new DebuggerPagerAdapter(getFragmentManager())
DebuggerPagerAdapter的代码
DebuggerPagerAdapter adapter = new DebuggerPagerAdapter();
TIA。
答案 0 :(得分:3)
碎片仅存在于活动中,而不存在于其他地方。您需要创建自己的PagerAdapter
实现,该实现不使用片段。