2015-12-10 5 views
0

Everytime я запускаю мой код эта ошибка возникаетjava.lang.IllegalStateException: Фрагмент уже добавили даже после .isAdded()

java.lang.IllegalStateException: Фрагмент уже добавлен: MyFragment {19704129 # 4 ID = 0x7f0e0077}

Вот код

FragmentManager manager = getSupportFragmentManager(); 
FragmentTransaction transaction = manager.beginTransaction(); 
if (!myFragment.isAdded()) 
    transaction.add(R.id.container, myFragment, myFragment.getTag()); 
transaction.commit(); 

Что? Зачем? Как?

ответ

0

Фрагменты могут быть добавлены в Деятельность и не быть видимыми. По умолчанию отображается Fragment.

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

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

http://developer.android.com/reference/android/app/Fragment.html#isHidden()

+0

Но является ли 'isAdded()' всегда истинным? Я использую 'Fragment.hide()' и 'Fragment.show()'. –

+0

Если вы не добавили фрагмент в диспетчер фрагментов, то 'isAdded()' не должен возвращать true. – novak

+0

Но это так. И его нельзя добавить, потому что он уже добавлен. Это так странно. –

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