Клавиша «Назад» для вывода фрагмента показывает перекрывающиеся фрагменты

Я создал образец приложения для проверки этой проблемы с перекрытием.

У меня есть тип фрагмента, Fragment1, и я создаю новый экземпляр Fragment1 и добавляю его в FrameLayout в моем действии во время выполнения. Я добавляю фрагмент с помощью нескольких кнопок.

Примечание: я присвоил каждому новому экземпляру Fragment1 другой номер (# 1, # 2, # 3 и т. Д.), Который будет отображаться в пользовательском интерфейсе, чтобы помочь мне понять выяснить, какой фрагмент я просматриваю.

Итак ... вот что я делаю:

  1. Нажмите кнопку 3, создайте новый экземпляр Fragment1 и добавьте его в Frame1.
  2. Нажмите кнопку 4, создайте новый экземпляр Fragment1, добавьте его в Frame1 и добавьте его в стопку фрагментов.
  3. Повторите 1 и 2.
  4. Повторите 1 и 2.

Теперь у меня есть фрагменты в следующем порядке: 1 (# 1), 2 ( №2), 1 (№3), 2 (№4), 1 (№5), 2 (№6).

Я нажимаю клавишу возврата при просмотре фрагмента №6.

  1. Нажатие кнопки возврата, пользовательский интерфейс отображает (# 5).
  2. Нажатие клавиши "Назад", отображается пользовательский интерфейс (# 3 И # 5),
  3. Нажатие клавиши "Назад", отображается пользовательский интерфейс (# 1, # 3, И # 5)

Кажется, что фрагменты отображаются НАДПИСЬ друг на друга.

ПОЧЕМУ? Есть ли проблема с дублированием? Как я могу устранить эту дублирующуюся проблему. Я думал, что это проблема библиотеки совместимости ... но она тоже есть в версии 3.0.

Код для добавления фрагментов:

public int  doFragmentChange(int cont1, Fragment frag1, String tag1, int cont2, Fragment frag2, String tag2, 
            boolean addToStack, String stackTag) {
        FragmentManager fm = getFragmentManager();// getSupportFragmentManager();
        FragmentTransaction ft = fm.beginTransaction();
        if (frag1 != null) {
            ft.replace(cont1, frag1, tag1);
        }
        if (frag2 != null) {
            ft.replace(cont2, frag2, tag2);
        }
        // add fragment to stack
        if (addToStack)
            ft.addToBackStack(stackTag);
        return ft.commit();
    } 
9
задан FHan 23 June 2011 в 16:39
поделиться