在我的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
设置片段时起作用,但是如果我们在xml中设置对象(就像我在我的main.xml
中所做的那样),它们将返回null
。我想我在我的XML文件中漏掉了一些东西。