В моєму 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();
Він встановлює різні типи об'єктів Fragment ( 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.