Макет моего приложения для планшетов Android состоит из списка элементов и подробного представления. Когда элемент списка выбран, связанное с ним содержимое отображается в представлении сведений.
+--------+-------------+
| Item 1 | |
+--------+ Item |
| Item 2 | details |
+--------+ |
| Item 3 | |
+--------+-------------+
Представление сведений представляет собой Fragment
, который программно расширяется до заполнителя FrameLayout
:
<FrameLayout
android:id="@+id/detail_fragment_placeholder"
android:layout_width="match_parent"
android:layout_height="match_parent">
Вот операция Fragment
:
getSupportFragmentManager()
.beginTransaction()
.replace(containerViewId, fragment, fragmentTag)
.addToBackStack(backStackStateName)
.commit();
Несколько экземпляров [Dx]
из DetailsFragment
добавляются в стопку, когда пользователь выбирает один элемент за другим.
[D3]
[D2] [D2]
[D1] -> [D1] -> [D1]
Таким образом, пользователю необходимо несколько раз нажать кнопку НАЗАД, чтобы извлечь экземпляры из стека и очистить представление сведений.
Как я могу заменить существующий экземпляр [Dx]
из DetailsFragment
в бэкстеке, если fragmentTag
из существующего fragment
совпадает с fragmentTag
из нового fragment
?
[D1] -> [D2] -> [D3]