0

这个问题已经在这里被问过很多次了,但是我找不到任何帮助。我正在编写一个 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()应用程序确实运行时(显然没有选项卡)

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

谢谢各位大佬

4

1 回答 1

5

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

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

将此行更改为:

_fragmentView =  inflater.inflate(R.layout.yes_fragment, null);
于 2012-10-07T19:52:32.347 回答