在片段中查看寻呼机

时间:2013-07-01 11:02:55

标签: android

再一次,我对AndroidSDK非常恼火。为什么这必须如此复杂?


我有一个ViewPager,我想用我的片段填充。我在一个Activity上实现了它并且它有效。但是当它在另一个片段中时,整个事情崩溃了,错误信息告诉我什么:

07-01 12:58:20.210: E/AndroidRuntime(10146): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

这是我的代码:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_tabwrapper, container);

    List<Fragment> fragments = getFragments();
    pageAdapter = new MyPageAdapter(getActivity()
            .getSupportFragmentManager(), fragments);



    pager = (ViewPager) v.findViewById(R.id.viewpager); 
    pager.setAdapter(pageAdapter); // <- CRASH!

    return v;
}

BTW:整个过程基于本教程:http://architects.dzone.com/articles/android-tutorial-using

3 个答案:

答案 0 :(得分:0)

发生此错误是因为您必须在viewpager中设置适配器之前删除所有视图,以便正确方式.....所以请检查:

   MyPageAdapter pageAdapter ;

   @Override
   public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_tabwrapper, container);

    List<Fragment> fragments = getFragments();
    pageAdapter = new MyPageAdapter(getActivity()
        .getSupportFragmentManager(), fragments);



    pager = (ViewPager) v.findViewById(R.id.viewpager); 
    pager.removeallviews();

    pager.setAdapter(pageAdapter); // <- CRASH!

    return v;

}

答案 1 :(得分:0)

您不应该使用ViewGroup提供的onCreateView容器来填充您的虚张声势的视图:

更改

View v = inflater.inflate(R.layout.fragment_tabwrapper, container); 

View v = inflater.inflate(R.layout.fragment_tabwrapper, null);

答案 2 :(得分:0)

这可能会对这个主题有所启发:http://developer.android.com/about/versions/android-4.2.html#NestedFragments

恕我直言:我不明白为什么开发人员会忍受这些工具。我觉得他们不可能合作。难怪Play商店有这么多低质量的应用程序。我期待这个项目完成的那一天。不会很快再次使用这个操作系统......