場景:
需求是在expandablelistview的item長按會彈出一個對話框,對話框頂部一個選項卡,下面是fragment作相應的切換。對話框是用DialogFragment實現的。
問題:
java.lang.IllegalArgumentException: No view found for id 0x7f0c00a8 (app.yinhai.org.securitycheckapp:id/container_contentDialog) for fragment ContentDialogFragmentRight{41d00280 #1 id=0x7f0c00a8}
切換時會報這個錯。
解決:
代碼中獲得的fragmentManager方式不對,應該用getChildFragmentManager()方法返回fragmentManager對象。
引用一段別人的總結:
當您遇到想在一個可復用的動態UI組件里放入另一個可復用的UI組件時,這個方案就非常有用。例如,如果您用ViewPager做了個可左右滑動的Fragment,並占用了大部分屏幕空間,您可以在其中的每個fragment頁面中嵌入別的fragment了。 想要實現嵌套Fragment,只需在您想進行嵌入的Fragment中調用getChildFragmentManager() 方法。這樣會返回一個FragmentManager,然后您就可以用和在頂層的Acitivity中嵌入fragment一樣的方法進行操作了。例如,以下代碼在一個現有的Fragment類中加上了另一個Fragment:
Fragment videoFragment = new VideoPlayerFragment();
FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
transaction.add(R.id.video_fragment, videoFragment).commit();
在嵌套的fragment中,您可以通過調用getParentFragment()方法來獲取父fragment的引用。
