2015-08-21 4 views
2

Вряд ли не может получить фрагмент из backstack, даже начать думать о том, чтобы оставаться в синглете, что, вероятно, плохо. Сэкономленные в backstack, как это, и все время пытаются получить его по тегу или что-то дает мне ошибку.Получить фрагмент из backstack

Fragment fragment = UserProfileFragment.newInstance(null); 
         FragmentTransaction trans = getFragmentManager().beginTransaction(); 
         trans.replace(FRAGMENT_PLACE_RESOURCES, fragment); 
         trans.addToBackStack("profile"); 
         trans.commit(); 

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

Fragment fragment2 = getFragmentManager().findFragmentByTag("profile"); 
+0

Пожалуйста, разместите ошибку, которую вы получите (полная трассировка стека и/или лог-код) – Sebastian

+0

Добавлен код, может быть, я добавляю тег не правильно? –

+0

Себастьян, спасибо за помощь. –

ответ

2

getFragmentManager().findFragmentByTag("tag")

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

fragmentTransaction.add(R.id.order_container,mProfileFragment,"profile");

или

fragmentTransaction.replace(R.id.order_container,mProfileFragment,"sometag");

Тогда вы сможете найти этот фрагмент по тегу.

В вашем случае вы добавляете транзакцию в backstack, чтобы вы не смогли найти этот фрагмент по тегу. Вы просто добавляете транзакцию в backstack, а это не фрагмент. А также ваш фрагмент был удален из действия и уничтожен, поэтому вам нужно вернуть транзакцию, выбив backstack вместо того, чтобы найти этот фрагмент по тегу. Вы должны вызвать

getFragmentManager().popBackStack("profile");

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