Я определяю ID для моего фрагмента в макете xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/test_fragment"
...
Затем я добавляю этот фрагмент в действие onCreate:
MyFragment myFragment = new MyFragment();
fragmentTransaction.add(R.id.fragment_container, myFragment);
fragmentTransaction.commit();
Все работает нормально. Замена фрагментов и также работает.
Позже я пытаюсь извлечь этот фрагмент по его идентификатору в один из методов активности:
MyFragment myFragment = (MyFragment) getFragmentManager().findFragmentById(R.id.test_fragment);
Это приводит к тому, что myFragment будет null
. Всегда.
Когда я пытаюсь сделать то же самое с тегами вместо ID, я могу без проблем получить фрагмент по тегу:
MyFragment myFragment = new MyFragment();
fragmentTransaction.add(R.id.fragment_container, myFragment, "testfragment");
fragmentTransaction.commit();
...
MyFragment myFragment = (MyFragment) getFragmentManager().findFragmentByTag("testfragment");
Почему findFragmentById не может найти фрагмент, но findFragmentByTag делает это? Я что-то пропустил?