2013-02-17 4 views
3

В этом вопросе есть две части.Правильный способ закрыть фрагменты

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

Часть 1

Где я должен закрыть фрагмент? Под этим я подразумеваю то, что считалось бы хорошим с дизайнерской точки зрения. Я вижу два варианта: одно объявление интерфейса в фрагменте и реализация его реализации, назовем его closeFragment(). Это будет способ связи из фрагмента с активностью, как показано на сайте Dev. Другой, вероятно, довольно прост и вызывает getActivity(). GetSupportFragmentManager() и использует диспетчер для его закрытия.

Часть 2

Я знаю, как создать фрагмент и заменить его, так как он находится на сайте Dev, но у меня есть сомнения по поводу закрытия одного. Как мне его закрыть? Правильно ли что-то вроде следующего кода? Предположим, что фрагмент был добавлен в BackStack.

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
getSupportFragmentManager().popBackStack(); 
transaction.remove(this); 
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE); 
transaction.commit(); 

спасибо.

ответ

2
  1. Я бы предпочел, имеющие тупой фрагмент, который ничего о том, где он используется не знает, так что вы можете использовать его на какой-либо деятельности вы хотите, и это будет иметь точную цель вы установленный для него. Конечно, вы можете делать все, что пожелаете.

  2. Это похоже на закрытие, но я предпочел бы вместо этого заменить его. Вы также можете вернуться к фрагменту, если у вас есть ссылка на него.

2
FragmentManager fm = getFragmentManager(); 
FragmentTransaction ft = fm.beginTransaction(); 
ft.remove(this); 
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE); 
ft.commit(); 
Смежные вопросы