用另一个片段替换view pager片段

时间:2014-05-07 05:04:22

标签: android android-fragments android-viewpager android-nested-fragment

所以我正在构建一个利用视图寻呼机代码的Android应用程序。视图寻呼机的第一个视图是一个列表,用户可以在其中选择一个并查看有关用户所选项目的更多详细信息。我已经设法使用片段内部片段方法成功完成了这项工作。

我目前的问题是视图寻呼机的第三个视图。第三个视图显示了在第一个视图中完成的操作的摘要,然后用户可以单击一个按钮,该按钮将用另一个片段替换当前的第三个视图。我使用的代码与我在第一个视图中使用的代码相同,即:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    rootView = inflater.inflate(R.layout.cart_fragment_layout, container, false);
    btn_1 = (Button) rootView.findViewById(R.id.btn_1);
    btn_1.setOnClickListener(new OnClickListener() {
          @Override
          public void onClick(View v) {
                fm = getChildFragmentManager();
                FragmentTransaction ft = fm.beginTransaction();
                CF = new CustomFragment();
                ft.addToBackStack("fragment_a");
                ft.add(R.id.fragment_custom_container, CF, "custom_fragment1");
                ft.commit();
                fm.executePendingTransactions();
                }
    });
    return rootView;
}

片段容器的onCreateView代码如下:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     super.onCreateView(inflater, container, savedInstanceState);
     try{
       rootView = inflater.inflate(R.layout.cart_container, container, false);
       fm = getFragmentManager();
       FragmentTransaction ft = fm.beginTransaction();
       CF = new CustomFragment();
       Bundle arguments = new Bundle();
       ft.addToBackStack("somewords");
       ft.add(R.id.fragment_custom_container, CF, "custom_fragment");
       CF.setRetainInstance(true);
       ft.commit();
       fm.executePendingTransactions();
     }
     catch(Exception E)
     {
       E.printStackTrace();
       System.out.println("exception:"+E.getMessage());
     }
    return rootView;
}

而容器的xml布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" 
android:id="@+id/ll_fragment_custom_layout"
android:background="#fff">
        <FrameLayout 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/fragment_custom_container"
    />
</LinearLayout>

但是代码不起作用,我收到了异常:

05-07 12:29:54.570: E/AndroidRuntime(7365): java.lang.IllegalArgumentException: No view found for id 0x7f060045 (com.example.fragmentname:id/fragment_cart_container) for fragment fragmenta{42bae2a0 #0 id=0x7f060045 fragment b}

我做错了吗?

0 个答案:

没有答案