Benim main.xmlvar
<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>
Ve böyle bir parça nesnesi ayarlıyorum
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment newFragment = new FragmentType1();
fragmentTransaction.replace(R.id.frameTitle, casinodetailFragment, "fragmentTag");
// fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
Farklı türde farklı Fragment nesneleri ( FragmentType2,FragmentType3,...) ayarlıyor . Şimdi bir noktada şu anda hangi nesnenin orada olduğunu tanımlamam gerekiyor.
Gelen kısa Böyle bir şey yapmanız gerekir:
Fragment currentFragment = //what is the way to get current fragment object in FrameLayout R.id.frameTitle
Aşağıdakileri denedim
TitleFragment titleFragmentById = (TitleFragment) fragmentManager.findFragmentById(R.id.frameTitle);
ve
TitleFragment titleFragmentByTag = (TitleFragment) fragmentManager.findFragmentByTag("fragmentTag");
Ama her iki nesne de (titleFragmentById ve titleFragmentByTag)null
Bir şey mi kaçırdım?
İçin kullanıyorum Compatibility Package, r3ve geliştiriyorum API level 7.
findFragmentById()ve veya öğesini findFragmentByTag()kullanarak bir parça ayarladıysak çalışacaktır , ancak nesneyi xml olarak ayarlamışsak çalışacaktır (benim yaptığım gibi ). Bence XML dosyalarımda bir şey eksik.fragmentTransaction.replacefragmentTransaction.addreturn nullmain.xml