В моем 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,...
) в разное время. Теперь, в какой-то момент, мне нужно определить, какой объект в настоящее время существует.
В коротком мне нужно сделать что-то вроде этого:
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
Я что-то пропустил?
Я использую Compatibility Package, r3
и разрабатываю для API level 7
.
findFragmentById()
и findFragmentByTag()
будут работать, если мы установили фрагмент с использованием fragmentTransaction.replace
или fragmentTransaction.add
, но будем return null
, если мы установили объект в xml (как то, что я сделал в моем main.xml
). Я думаю, что в моих XML файлах что-то не хватает.