Могу ли я удалить фрагмент, определенный в файле layout.xml? - PullRequest
12 голосов
/ 18 января 2012

Можно ли использовать FragmentTransaction и метод remove (), чтобы избавиться от фрагментов, определенных в layout.xml (с использованием тега фрагмента)?

Я не получил это для работы сбиблиотеки поддержки v4.Фрагмент остается на месте после совершения FragmentTransaction после вызова remove ().Может кто-нибудь сказать мне, если это по замыслу, ошибка или функция?

Можно заменить фрагмент, который определен в lyaout.xml, поэтому я нахожу немного странным, что это не должноможно ли это убрать?

Ответы [ 3 ]

13 голосов
/ 18 января 2012

Собственные API, доступные начиная с Honeycomb, работают так же, как и в библиотеке поддержки, поэтому вы не можете удалить экземпляр Fragment, который был объявлен в файле XML макета.

С FragmentTransactions вы манипулируете ViewGroupsтакие как LinearLayouts, которые действуют как контейнеры для хранения макета других фрагментов.Однако, когда вы объявляете Fragment в своем макете, у него нет контейнера в том же смысле, потому что он постоянно является частью иерархии View, поэтому вы не можете удалить его.Это сделано для поддержки таких вещей, как навигация. Фрагменты, которые вы никогда бы не удалили.:)

Одна вещь, которая интересна, и я обнаружил это совершенно случайно, это то, что вы можете добавлять новые фрагменты во фрагмент, который был объявлен с тегом в вашем макете;и он действует как контейнер для других фрагментов

1 голос
/ 06 октября 2016

Как говорили @ david-c-sainte-claire и @ martín-marconcini, нельзя использовать метод remove () и FragmentTransaction для удаления фрагмента, определенного в XML.Это не значит, что вам не повезло.Вы всегда можете использовать метод setVisibility ().

findViewById(R.id.fragment_main).setVisibility(View.GONE);
1 голос
/ 18 января 2012

Я не сделал этого, чтобы использовать библиотеки поддержки v4.Фрагмент остается на месте после совершения FragmentTransaction после вызова remove ().Может кто-нибудь сказать мне, если это из-за конструкции, ошибки или функции?

Это из-за дизайна (или отсутствие функции, не обязательно функция, если вы спросите меня: P).Поэтому, пока вы используете библиотеки поддержки, вы не можете этого достичь.

...