Trong tôi main.xml
có
<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>
Và tôi đang thiết lập đối tượng mảnh như thế này
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment newFragment = new FragmentType1();
fragmentTransaction.replace(R.id.frameTitle, casinodetailFragment, "fragmentTag");
// fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
Nó đang thiết lập các loại đối tượng Fragment ( FragmentType2,FragmentType3,...
) khác nhau tại thời điểm khác nhau. Bây giờ tại một số thời điểm tôi cần xác định đối tượng nào hiện đang ở đó.
Trong ngắn tôi cần phải làm một cái gì đó như thế này:
Fragment currentFragment = //what is the way to get current fragment object in FrameLayout R.id.frameTitle
Tôi đã thử như sau
TitleFragment titleFragmentById = (TitleFragment) fragmentManager.findFragmentById(R.id.frameTitle);
và
TitleFragment titleFragmentByTag = (TitleFragment) fragmentManager.findFragmentByTag("fragmentTag");
Nhưng cả hai đối tượng (titleFragmentById và titleFragmentByTag)null
tôi có bỏ lỡ điều gì không?
Tôi đang sử dụng Compatibility Package, r3
và phát triển cho API level 7
.
findFragmentById()
và findFragmentByTag()
sẽ hoạt động nếu chúng ta đã thiết lập đoạn bằng cách sử dụng fragmentTransaction.replace
hoặc fragmentTransaction.add
, nhưng sẽ return null
nếu chúng ta đã đặt đối tượng ở xml (giống như những gì tôi đã làm trong phần của mình main.xml
). Tôi nghĩ rằng tôi đang thiếu một cái gì đó trong các tệp XML của tôi.