2

Где я иду не так. Я просто хочу проверить, доступен ли фрагмент с данным ProductId в BackStack;findFragmentByTag всегда возвращает null

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

public void showThisFragment(Fragment newFragment,int productId){ 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
    fragmentTransaction.replace(R.id.am_fragment_holder, newFragment); 
    if(fragmentManager.findFragmentByTag(productId+"")==null){ 
     fragmentTransaction.addToBackStack(productId+""); 
    }else{ 
     //TODO fragment already present 
     //So dont add to the back stack 
    }  
    fragmentTransaction.commit(); 
} 

, пожалуйста, помогите!

+0

Вы должны добавить фрагмент в стопку с помощью ключа, который отличается от добавления фрагмента с ключом в первую очередь. Или вы можете найти ключ, выполнив поиск по обратной стороне напрямую. Там хорошая запись [здесь.] (Http://stackoverflow.com/questions/9702216/get-the-latest-fragment-in-backstack) – NameSpace

+0

Я не могу добавить его с помощью ключа .., в моем случае теги - это то, что у меня есть. Можете ли вы помочь мне с некоторыми изменениями в моем нынешнем коде. – AabidMulani

ответ

1

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

fragmentTransaction.replace(R.id.am_fragment_holder, newFragment, String.valueOf(productId)); 
+0

Не помогает ... Получение неожиданного вывода ... – AabidMulani

+0

Хорошо. Тогда я скомпилирую ваш код. Будьте на связи. –

Смежные вопросы