0

Вот скриншот изображения:Как можно использовать фрагменты для создания макета в изображении отображается

enter image description here

Мой запрос как можно реализовать схему стека, показанную? Я просмотрел файлы ресурсов, и большинство из них показывают только, как реализовать два фрагмента.

Может кто-нибудь, пожалуйста, дать мне пример того, как я могу создать фрагмент стека, как показано?

Получу это. Благодарю.

+0

Любые идеи кто-нибудь? Мне действительно нужна помощь! – user788511

+0

+1 для приятной презентации ребята –

ответ

0

Одно из возможных решений приводятся ниже Пожалуйста настройки ширины и высоты в зависимости от случая использования

Для ландшафта использует

<LinearLayout android:orientation="horizontal" ..> 
    <fragment android:name="com.example.FragmentA" 
     android:id="@+id/fa" 
     android:layout_width="xdp" 
     android:layout_height="match_parent" /> 
    <LinearLayout android:orientation="vertical" ...> 
     <fragment android:name="com.example.FragmentB" 
     android:id="@+id/fb" 
     android:layout_width="ydp" 
     android:layout_height="wrap_content" /> 
     <fragment android:name="com.example.FragmentC" 
     android:id="@+id/fc" 
     android:layout_width="zdp" 
     android:layout_height="wrap_content" /> 
    </LinearLayout> 
</LinearLayout> 

Для использования портретного

<LinearLayout android:orientation="vertical" ..> 
    <fragment android:name="com.example.FragmentA" 
     android:id="@+id/fa" 
     android:layout_width="match_parent" 
     android:layout_height="Xdp" /> 
    <LinearLayout 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 
     <fragment android:name="com.example.FragmentB" 
     android:id="@+id/fb" 
     android:layout_width="ydp" 
     android:layout_height="wrap_content" /> 
     <fragment android:name="com.example.FragmentC" 
     android:id="@+id/fc" 
     android:layout_width="wrap_cotent" 
     android:layout_height="wrap_content" /> 
    </LinearLayout> 
</LinearLayout> 
+0

Спасибо Rajdeep. Хотя маленький запрос. Есть ли способ, чтобы фрагмент layout_width был установлен программно, чтобы он не был зафиксирован в файле xml? Большое спасибо. – user788511

+0

Да, вы можете установить ширину в представлении, возвращаемом методом onCreateView фрагмента –

+0

Rajdeep, пожалуйста, извините мое невежество, но я новичок, не могли бы вы помочь мне написать небольшой код в окне onCreate, показывающий, как можно установить ширину? Большое спасибо. – user788511

2

Если фрагменты тесно связанные друг с другом, просто не запускают их в отдельных видах деятельности. Для случая с одной панелью вы можете просто переключать фрагменты в пределах одного действия.

В противном случае, если вы хотите отделить их между действиями, вам нужно использовать модель onActivityResult() для распространения результатов назад, а в случае с двумя панелями «эмулировать» это просто второй вызов onActivityResult() первого фрагмента. Обратите внимание, что Fragment.setTargetFragment() содержит аргумент кода запроса, чтобы облегчить это.

I have activity A loading Fragment F1 which loads fragment F2 

IMHO, фрагменты не должны загружать другие фрагменты. Выполняет загрузку фрагментов, основываясь на доступном пространстве экрана. Фрагменты не должны знать и не учитывать, существует ли какой-либо другой фрагмент в текущей деятельности, или если другие фрагменты находятся в других действиях.

I have F2 calling back to activity A to pop it off of the stack. Should I then be looking at passing a message to F1 to do what it needs to do? 

Да.

What I'm wondering is whether I'm on the right track with regards passing messages back and forwards via the parent activity or is there a more direct way of F1 responding to F2 performing something that requires it to be closed and F1 do what it needs to do. 

У меня не было бы F1, даже знаю, что F2 существует, или наоборот. Когда пользователь делает что-то в F1, что должно привести к большому смещению контекста (например, отобразить некоторые другие фрагменты/действия), F1 должен сообщить об активности хостинга, возможно, через интерфейс прослушивателя, зарегистрированный в F1 (для поддержки нескольких возможных действий хостинга) , Затем деятельность будет способствовать тому, чтобы F2 появлялся либо в своей собственной деятельности, либо в другой деятельности. Точно так же, когда F2 завершает работу, он будет информировать свою деятельность по хостингу через интерфейс прослушивателя, и эта деятельность может перенаправить управление обратно в соответствующее место.

Я несколько скептически отношусь ко всему вашему «F2 выполняет действие, которое должно привести к его закрытию», если только F2 не является диалоговым.

+0

Майк Мне нравятся ваши аргументы. У вас есть какая-либо ссылка, где я могу ссылаться на то, как переключать фрагменты в рамках одного действия? – user788511