2015-02-08 3 views
0

У меня есть 2 фрагмента, один для игры и один для оценки. Когда я перехожу от фрагмента игры к фрагменту счета, он отлично работает, но когда я пытаюсь вернуться к игре, он рисует оба фрагмента в одном контейнере (даже при использовании функции удаления).Один фрагмент рисуется поверх другого

 public void nextLvl(Fragment current, Fragment next, String score, String nextTag, int LvlTime){ 
     Bundle args = new Bundle(); 
     args.putString("scoreKey", score); 
     args.putInt("levelTime", LvlTime); 
     next.setArguments(args); 

     FragmentManager fm = getFragmentManager(); 
     if (fm != null){ 
      FragmentTransaction ft = fm.beginTransaction(); 
      ft.remove(current); 
      ft.add(R.id.fragment_place, next, nextTag); 
      ft.commit(); 
      Log.d("FM","MOVED TO "+next.toString()); 
     }else{ 
      Log.d("FM","fm is null"); 
     } 
    } 

Этот код используется для перемещения между фрагментами.

Вот изображение, чтобы показать, что я имею в виду «втягивания друг на друга»:

http://i.imgur.com/Ylw8iPV.png

1 = фрагмент игры.

2 = фрагмент оценки.

3 = Результат перехода от фрагмента фрагмента к фрагменту игры.

+0

У меня была аналогичная проблема раз. Я использовал фрагмент в качестве атрибута в моем XML-файле и попытался добавить в него фрагмент. Я перешел из фрагмента в FrameLayout в свой xml, и все сработало нормально. Итак, каков атрибут вашего «R.id.fragment_place»? – Furedal

+0

@Furedal Это фрагмент. Я поменяю его на FrameLayout и повторю попытку, я обновляю вас, если это сработает или нет. Редактировать: Не работает, к сожалению .. – cnsdH

+0

Вы должны загрузить весь соответствующий код, когда вы переключаете фрагменты, если мы сможем вам помочь. – Furedal

ответ

0

Попробуйте использовать ft.replace вместо remove() и add()

Например:

ft.beginTransaction() 
        .replace(R.id.container, fragment) 
        .commit(); 
+0

По-прежнему рисует его поверх другого: \ – cnsdH

1

Используйте заменить фрагмент вместо добавления

пример:

FragmentTransaction ft = fm.beginTransaction(); 
     ft.replace(R.id.fragment_place, next, nextTag); 
     ft.commit(); 
Смежные вопросы