Android: фрагменты в мечтах
Я пытаюсь создать приложение daydream и не могу найти никакой документации по использованию фрагментов в моем классе DreamService.
Я намеревался использовать фрейм в файле XML:
<FrameLayout
android:id="@+id/content_frag"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
/>
А затем используйте FragmentManager, чтобы добавить мой фрагмент во фрейм:
public void onAttachedToWindow( )
{
setContentView(R.layout.daydream);
getFragmentManager().beginTransaction().replace(R.id.content_frag, new ContentFragment(), "ContentFragment")
.commit();
super.onAttachedToWindow();
}
В DreamService, похоже, нет функции getFragmentManager() или эквивалентной функции, поэтому возможно ли это, и как мне это сделать?
Спасибо
2 ответа
Можно использовать фрагмент вместе с DreamService. Хотя только потому, что вы можете, это не значит, что вы должны это делать, потому что есть некоторые оговорки, о которых ваш фрагмент должен знать, что он используется нормально (в Activity
) и в DreamService
,
Работает следующий фрагмент кода (был протестирован на устройстве):
MyFragment fragment = new MyFragment();
View view = fragment.onCreateView(LayoutInflater.fromContext(this), null, null);
setContentView(view);
Но вы должны заметить, что если ваш фрагмент опирается на Activity
(звонки getResources()
или потребности getActivity()
например, чтобы вернуть ненулевое значение), необходимо проверить isAdded()
по возможности, чтобы избежать IllegalStateException
S и нулевые ссылки. Также обратите внимание, что вы несете ответственность за вызов соответствующих методов жизненного цикла (т.е. onDestroyView()
так далее).
Я не думаю, что вы можете сделать это. DreamService - это Сервис. Он не имеет понятия FragmentManager.