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() по возможности, чтобы избежать IllegalStateExceptionS и нулевые ссылки. Также обратите внимание, что вы несете ответственность за вызов соответствующих методов жизненного цикла (т.е. onDestroyView() так далее).

Я не думаю, что вы можете сделать это. DreamService - это Сервис. Он не имеет понятия FragmentManager.

Другие вопросы по тегам