Я создаю приложение для планшета. В этом приложении есть одно действие с двумя фрагментами. Первый фрагмент - это "известный" фрагмент списка, который показывает простой список макетов элементов из запроса базы данных, второй фрагмент показывает подробности о выбранной записи (из фрагмента списка). Мысль со вторым фрагментом заключается в том, что его тип зависит от записей, отображаемых в списке. Например, если записи являются клиентами, тогда отображаются выбранные данные клиента, если они являются элементами инвентаря, отображаются данные выбранного элемента и т.д. Чтобы связаться с фрагментом деталей, я создал интерфейс, который реализует каждый фрагмент фрагмента. Фрагмент списка "фиксирован" в активности из макета xml. Тем не менее фрагмент детали создается во время создания активности следующим образом:
super.onCreate(savedInstanceState);
setContentView(R.layout.act_hlpfiles_host);
.....
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.laydetailsfragment, FragmentsPool.getHelperFileFragment(501), "recordDetails");
fragmentTransaction.commit();
myDetailsFragment = getFragmentManager().findFragmentByTag("recordDetails");
...
myListFragment = (frg_hlpfiles_lstrecords) getFragmentManager().findFragmentById(R.id.frg_lstrecords);
....
}
Проблема с этим кодом заключается в том, что myDetailsFragment всегда имеет значение null. Это происходит из-за того, что фрагментTransaction.commit() не запускается немедленно, но он происходит в основном потоке в следующий раз, когда поток готов (как указано в документации по android).
Если я создам фрагмент детали в onStart() и создаю экземпляр фрагмента списка в onCreate, все работает нормально.
Итак, вопрос: как я могу быть уверенным, что фрагментTransaction.commit() совершил транзакцию, чтобы я мог выполнить некоторую работу с добавленным фрагментом? Кроме того, есть ли способ подождать, пока произойдет фиксация, а затем продолжить с остальной частью кода?
Спасибо за ваше время и усилия,
Христоса