Фрагмент транзакции, остаток предыдущего фрагмента

Я новичок в создании фрагментов, и у меня нет проблем с этим. Во втором действии (в макете) у меня есть виджет

<fragment 
...
android:name = "path to my first fragment"
...
/>

Мне нужно обменять три фрагмента. Я делаю это таким образом

  // get fragment manager and fragment transaction
        FragmentManager manager = getFragmentManager();
        FragmentTransaction transaction = manager.beginTransaction();

        // replace fragment on register form
        transaction.replace(R.id.fragment, new Confirmation());

        // commit transaction
        transaction.commit();

и мой макет фрагментов заключен в макет с двумя ограничениями, подобный этому

<android.support.constraint.ConstraintLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent">
// additional widgets
    <android.support.constraint.ConstraintLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    </android.support.constraint.ConstraintLayout>

Я нашел это решение в стеке, потому что у меня были видимые остатки предыдущего фрагмента. Теперь у меня есть невидимые остатки предыдущего фрагмента. Где у меня ошибка? Когда я нажимаю на позицию кнопки из предыдущего фрагмента, нажимается кнопка в этом месте

Fragment, определенные в вашем макете, не могут быть удалены / заменены во время выполнения. Замените <fragment> на обычный <FrameLayout> и загрузите Fragment, который был в нем при запуске.
Mike M. 29.07.2018 10:55

Кроме того, я не уверен, чем помог удвоенный макет, но, вероятно, вам больше не нужно этого делать.

Mike M. 29.07.2018 11:11

@Mike M. спасибо за помощь, это работает, но я не знаю, когда использовать <fragment />? Мне не удалось найти ответ, который вы отметили: /

Michał Urban 29.07.2018 11:31

Вы можете думать о <fragment> как о чем-то вроде постоянного приспособления в вашем макете; Хотелось особой разновидности View. Если вам не нужно динамически удалять / заменять Fragment во время выполнения, вы бы использовали это. Это полезно, когда вы хотите повторно использовать некоторые элементы пользовательского интерфейса вместе с их логикой поддержки в отдельных компонентах или проектах, но вам никогда не нужно менять их местами во время работы. Они могут немного облегчить жизнь в том, что касается жизненного цикла - например, во время ротации - потому что FragmentManager автоматически загружает их и отслеживает их за вас. Есть смысл?

Mike M. 29.07.2018 11:38

Связанный дубликат теперь отображается в баннере вверху вашего вопроса. Возможно, вам потребуется обновить страницу. Вот опять ссылка, на всякий случай: stackoverflow.com/questions/29788837/….

Mike M. 29.07.2018 11:41

Спасибо, теперь понял :)

Michał Urban 29.07.2018 12:00
0
6
23
0

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