在我的main.xml我有
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 对象 ( )。现在在某个时间点,我需要确定当前存在哪个对象。
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.
null
Compatibility Package, r3
API level 7
findFragmentById()``findFragmentByTag()如果我们使用fragmentTransaction.replaceor设置了片段,并且将工作fragmentTransaction.add,但return null如果我们在 xml 中设置了对象(就像我在我的 中所做的那样main.xml)。我想我在我的 XML 文件中遗漏了一些东西。
findFragmentById()``findFragmentByTag()
fragmentTransaction.replace
fragmentTransaction.add
return null
现在在某个时间点,我需要确定当前存在哪个对象
调用findFragmentById()并FragmentManager确定哪个片段在您的R.id.frameTitle容器中。
findFragmentById()
FragmentManager
R.id.frameTitle
如果您在现代应用程序中使用“的androidx版本”,请使用/而不是Fragment``getSupportFragmentManager()``FragmentActivity``AppCompatActivity``getFragmentManager()
androidx
Fragment``getSupportFragmentManager()``FragmentActivity``AppCompatActivity``getFragmentManager()