Получил исключение :фрагмент уже активен

У меня есть фрагмент ;

MyFragment myFrag = new MyFragment();

Я помещаю пакет данных в этот фрагмент:

Bundle bundle = new Bundle(); 
bundle.putString("TEST", "test");
myFrag.setArguments(bundle);

Затем я заменяю старый фрагмент этим и помещаю в стопку:

//replace old fragment
fragmentTransaction.replace(R.id.fragment_placeholder, myFrag, "MyTag");
//put on backstack
fragmentTransaction.addToBackStack(null);
//commit & get transaction ID
int transId = fragmentTransaction.commit();

Позже я pop backstack с указанным выше идентификатором транзакции (transId):

//pop the transaction from backstack
fragmentManager.popBackStack(transId,FragmentManager.POP_BACK_STACK_INCLUSIVE); 

. Позже я снова установил пакет данных в качестве аргумента для своего фрагмента (myFrag):

//Got Java.lang.IllegalStateException: fragment already active
myFrag.setArguments(bundle);

. Как видите, мой приведенный выше код получил исключение Java.lang.IllegalStateException: fragment already active. Я не понимаю, почемуmyFragвсе еще активен, хотя я вытащил его транзакцию из стека. , во всяком случае, поскольку я получил исключение, я подумал, что у меня нет другого выбора, кроме как -активировать фрагмент, поэтому я сделал:

Fragment activeFragment = fragMgr.findFragmentByTag("MyTag");
fragmentTransaction.remove(activeFragment);

Я не уверен, действительно ли мой приведенный выше код может де -активировать фрагмент, так как я не нашел, как активировать -фрагмент.:(

После этого, когда я снова пытаюсь установить данные пакета в свой фрагмент myFrag, я все равно получаю ту же ошибку:

Java.lang.IllegalStateException: fragment already active

Кажется, даже я удалил фрагмент, он все еще активен... Почему? Как сделать -активным фрагмент?

58
задан Leem.fin 28 April 2012 в 14:48
поделиться