BitNeBolt
@BitNeBolt

Плчему не удаётся получить доступ к элементам фрагмента сразу после его добавления?

При запуске новой активити мне нужно добавлять фрагмент, а в нем изменить текст у TextView. Почему программа вылетает при след. блоке кода? Если вынести его в отдельный метод onClick() (тогда нельзя изменять значение при запуске), то все работает и текст меняется.

С чем это связано и есть ли другие способы получения содержимого фрагмента?

Вот кусок кода, который не работает:
FragmentManager manager = getSupportFragmentManager();

FragmentTransaction transaction = manager.beginTransaction();
TextFragment text_fragment = new TextFragment();

transaction.add(R.id.fragment_layout, text_fragment);
transaction.commit();

Fragment test_one = manager.findFragmentById(R.id.fragment_layout);
((TextView) test_one.getView().findViewById(R.id.sentence)).setText("dsadasd");
  • Вопрос задан
  • 39 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Потому что коммит транзакции асинхронный. Когда ты его сделал, фрагмент добавился не сразу. Можно сделать commitNow или executePendingTransactions.

Но в любом случае это неправильно, вьюха фрагмента это его личное дело, она должна быть инкапсулированна в нём и снаружи дёргаться не должна.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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