Получить текущий объект фрагмента

В моем main.xml у меня есть

  <FrameLayout
        android:id="@+id/frameTitle"
        android:padding="5dp"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:background="@drawable/title_bg">
            <fragment
              android:name="com.fragment.TitleFragment"
              android:id="@+id/fragmentTag"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content" />

  </FrameLayout>

И я устанавливаю объект-фрагмент следующим образом

FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment newFragment = new FragmentType1();
fragmentTransaction.replace(R.id.frameTitle, casinodetailFragment, "fragmentTag");

// fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

Он устанавливает различные типы объектов-фрагментов ( FragmentType2, FragmentType3, ... ) в разное время. Теперь в какой-то момент мне нужно определить, какой объект сейчас находится там.

В short мне нужно сделать что-то вроде этого:

Fragment currentFragment = //what is the way to get current fragment object in FrameLayout R.id.frameTitle

Я пробовал следующие

TitleFragment titleFragmentById = (TitleFragment) fragmentManager.findFragmentById(R.id.frameTitle);

и

    TitleFragment titleFragmentByTag = (TitleFragment) fragmentManager.findFragmentByTag("fragmentTag");

Но оба объекта (titleFragmentById и titleFragmentByTag) имеют значение null
Я что-то пропустил?
Я использую пакет совместимости, r3 и разрабатываю для API уровня 7 .

findFragmentById () и findFragmentByTag () будут работать, если мы установили фрагмент с помощью fragmentTransaction.replace или fragmentTransaction.add , но вернет значение null , если мы установили объект в xml (как то, что я сделал в моем main.xml ). Я думаю, что что-то не хватает в моих файлах XML.

168
задан Léo Lam 9 November 2014 в 08:46
поделиться