Интерфейс Android Master / Detail внутри ViewPager

Я столкнулся с проблемой, которую я не могу решить, много искал, но не смог найти решение.

В моем приложении у меня есть ViewPager, который содержит 3 страницы. Эти страницы являются фрагментами, какими они должны быть. Это работает хорошо. Однако две из этих страниц должны быть потоками Master / Detail (один для списка друзей, один для ленты новостей). Когда я создаю поток master / detail с фрагментами eclipse 2 и создаются 2 действия. ItemListActivity (тот, который должен быть показан) реализует обратные вызовы фрагмента, и это действие, но ViewPager принимает только фрагменты внутри себя.

Поэтому возникает вопрос: как я могу разместить Master / Detail Flow внутри ViewPager?

Вся помощь очень ценится! У меня здесь все идеи.

благодаря

Master / Detail Flow – это просто псевдоним для 2 фрагментов, используемых в одном и том же виде содержимого, один слева и один справа. Это общая идея. Теперь поток Master / Detail можно использовать внутри Activity (например, Eclipse для описанного вами шаблона) или внутри фрагмента, к счастью, поскольку Android 4.2 представил фрагменты внутри других фрагментов (это также поддерживается библиотекой совместимости Android для более старой версии Android).

Шаблон, созданный Eclipse, содержится в Activity (on tablets) или 2 Activity (для телефонов), потому что Eclipse не знает, что вам нужен мастер / деталь внутри фрагмента. Таким образом, вы не можете полагаться на шаблон Eclipse. Но не так сложно просто положить 2 фрагмента внутри другого фрагмента.

Вам просто нужно некоторое время забыть о ViewPager и выполнить свою работу внутри Фрагмента, который будет содержать поток Master / Detail, назовем его MasterFragment.

  1. Объявите еще 2 фрагмента: InnerListFragment, InnerDetailFragment. Также InnerDetailActivity для телефонов.
  2. Объявить 2 файла макета XML для MasterFragment:

    • Layout / fragment_master.xml – добавьте внутри этого только тег InnerListFragment <fragment>
    • Layout-sw600dp / fragment_master.xml (для таблиц> 7 ") – добавьте теги InnerListFragment и InnerDetailFragment <fragment> .
  3. Теперь я не буду подробно описывать все ваши java-коды, но внутри MasterFragment.java вам нужно проверить, является ли устройство планшетом, чтобы вы знали, какой из 2 фрагментов активен на экране.

    • Если это телефон, отображается только InnerListFragment. Поэтому просто добавьте список, и onClickListener запустит InnerDetailActivity, в котором вам нужно поместить InnerDetailFragment.

    • Если это таблетка, то видны внутренние фрагменты. Не запускайте новое действие при нажатии на элемент списка, просто используйте ссылку на оба фрагмента внутри MasterFragment, чтобы вы могли общаться между ними.

Это общая идея. Если у вас все еще есть вопросы, спросите.