Я не могу на всю жизнь понять, почему иногда мои Фрагменты становятся неуправляемыми после того, как мое приложение было запущено, приостановлено, а затем возобновлено.ViewPager Фрагменты, которые уничтожаются, когда приложение находится в фоновом режиме?
Я держу ссылки на мои фрагментах, как это:
public class MainActivity ... {
public static AccountFragment accountFragment;
....
@Override
protected void onCreate(... {
accountFragment = new AccountFragment(this);
...
}
У меня есть пользовательская панель инструментов с Spinner, который теоретически должен позволить пользователю вызвать AsyncTask в AccountFragment для запуска. Это реализуется следующим образом:
if (accountFragment.getView() != null) {
accountFragment.load()
}
Я затем создать ViewPager, а FragmentPagerAdapter и т.д.
Это полностью работает отлично большую часть времени. Пользователь может выбрать новый элемент в Spinner и соответствующим образом обновить AccountFragment. Однако иногда после того, как приложение было остановлено, а затем возобновлено, AccountFragment вообще ничего не ответит. Даже другие мнения в приложении, которые должны влиять на AccountFragment, бесполезны. Для меня это не имеет смысла, поскольку представление AccountFragment не может быть нулевым, а AsyncTask, выполняемый accountFragment.load(), вносит очень простые изменения в пользовательский интерфейс в onPreExecute, который должен быть очень заметным (например, все исчезает и появляется ProgressBar), которого просто не происходит.
Любые идеи?
Спасибо за всесторонний ответ! 1: Хорошо, я сделаю это. 2: Мои фрагменты каким-то образом нуждаются в ссылке на мою MainActivity. Как иначе это должно быть сделано? 3: Как я могу определить, воссоздает ли onCreate или создается ли он недавно? Что бы я сделал по-другому, если бы обнаружил, что он воссоздан? – zholmes1
Ваш фрагмент имеет метод getActivity(). Вы можете отбросить возвращенную активность в свою MainActivity. Что касается отдыха: если savedInstanceState в методе onCreate() имеет значение null, то обычно это означает, что активность только что создана. Если он не является нулевым, он воссоздается. –
Считаете ли вы, что, может быть, вокруг моего экземпляра моих фрагментов может быть следующее, если блок может работать?if (savedInstanceState == null) {// экземпляр фрагментов} – zholmes1