@asdf999
Android Programmer

Как избавиться от java.lang.IllegalStateException при вызове addToBackStack?

При вызове метода addToBackStack иногда происходит java.lang.IllegalStateException: Activity has been destroyed. И как от этого избавиться?

public void addMainFragment() {
		hideKeyboard();
		if (mainFragment == null) {
			mainFragment = new MainFragment();
		}
		final FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
		ft.add(R.id.containerFrameLayout, mainFragment, "MainFragment");
		ft.addToBackStack("MainFragment");
		ft.commitAllowingStateLoss();
		getSupportFragmentManager().executePendingTransactions();
	}
  • Вопрос задан
  • 26491 просмотр
Пригласить эксперта
Ответы на вопрос 2
DrZ0idberg
@DrZ0idberg
Android-разработчик. Стаж - возраст Android.
Так вроде всё очевидно - addMainFragment() вызывается в неподходящий момент. Тут нужно смотреть на код всей активити и анализировать почему вызывается addMainFragment() на мертвом экземпляре активити. Возможно когда активити пересоздана какая-то фоновая задача у вас завершает свою работу и пытается что-то сделать с экземпляром активити, к которому жестко привязана... Чаще всего подобного рода проблемы возникают.
Ответ написан
naXa
@naXa
Junior Java(Script) Developer
Найти корень проблемы и избавиться от него. Исключение IllegalStateException указывает на то, что метод был вызван в неподходящее время.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы