Android FragmentTransaction Commit Commit, когда?

Я создаю приложение планшета. В этом приложении есть одно действие с двумя фрагментами. Первый фрагмент - это «известный» фрагмент списка, который показывает простой список макета элементов из запроса базы данных, второй фрагмент показывает подробную информацию о выбранной записи (из фрагмента списка). Думайте со вторым фрагментом в том, что его тип зависит от отображаемых записей в списке. Например, если записи являются клиентами, то отображаются детали выбранного клиента, если они являются элементами инвентаризации, отображаются детали выбранного элемента и т. Д. Для того, чтобы общаться с деталями фрагмента, я создал интерфейс, который каждая деталь класса фрагментов реализует. Фрагмент списка «фиксируется» в активности от макета 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 всегда нулевой. Это связано с тем, что FragmentTransaction.comMIT () не работает немедленно, но оно происходит на главной резьбе, в следующий раз, когда нить готов (в качестве документации Android-документации).

Если я создаю детальный фрагмент в OnStart () и создать эффектный фрагмент списка в Oncreate, все работает хорошо.

Итак, вопрос: как я могу быть уверен, что FragmentTransaction.commit () совершает транзакцию, чтобы я мог сделать некоторую работу с добавленным фрагментом? Кроме того, есть какие-то способы дождаться до совершенствования, а затем продолжится с остальной частью кода?

46
задан ROMANIA_engineer 14 January 2018 в 19:52
поделиться