指定的孩子已经是父母

时间:2012-10-07 19:47:27

标签: android android-fragments android-actionbar android-tabs

这个问题已在这里被多次询问,但我找不到任何帮助。我正在编写一个Android应用程序,似乎在ActionBar上创建选项卡时遇到问题。我一直在寻找问题几个小时似乎无法找到解决方案,但我认为我确实找到了源。我甚至已经清空了实现只是为了获得一些结果并在它们的基础上构建,但是我没有找到任何东西。

这是创建标签片段并插入操作栏

    // put ActionBar to nav. mode
    ActionBar actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // init "YES" tab
    Fragment yesTabFragment = Fragment.instantiate(this, YesTabFragment.class.getName());
    FlowTabListener yesTabListener = new FlowTabListener(yesTabFragment);
    ActionBar.Tab yesTab = actionBar.newTab().setText("YES").setTabListener(yesTabListener);
    actionBar.addTab(yesTab);

这是类

的onCreateView方法
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    _fragmentView =  inflater.inflate(R.layout.yes_fragment, container);    
}

这是片段XML布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:orientation="vertical" >

    </LinearLayout>

正如您所看到的,实现是空的,我没有在此时间之前(而不是之后)实例化此片段但是我收到此错误:

E/AndroidRuntime(2995): FATAL EXCEPTION: main
E/AndroidRuntime(2995): java.lang.RuntimeException: Unable to start activity ComponentInfo{activities.MainActivity}:    
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.

我认为这与将标签添加到操作栏有关,因为当我注释掉actionBar.addTab()应用程序运行时(显然没有标签)

我真的很想知道如何解决这个问题。

非常感谢主人

1 个答案:

答案 0 :(得分:5)

inflate()的第二个参数是默认父级:

_fragmentView =  inflater.inflate(R.layout.yes_fragment, container);

将此行更改为:

_fragmentView =  inflater.inflate(R.layout.yes_fragment, null);