Android ListFragment add headerView给出java.lang.IllegalStateException:alled

Android ListFragment add headerView给出java.lang.IllegalStateException:alled,android,android-fragments,Android,Android Fragments,我有两个列表片段是由一个tabhost编辑的。第一次我在标签之间切换时一切正常。已正确添加headerView。第二次在片段之间切换时,我得到以下执行选项: 10-05 15:15:01.585: ERROR/AndroidRuntime(23263): java.lang.IllegalStateException: Cannot add header view to list -- setAdapter has already been called. 10-05 15:15:01.585

我有两个列表片段是由一个tabhost编辑的。第一次我在标签之间切换时一切正常。已正确添加headerView。第二次在片段之间切换时,我得到以下执行选项:

10-05 15:15:01.585: ERROR/AndroidRuntime(23263): java.lang.IllegalStateException: Cannot add header view to list -- setAdapter has already been called. 
10-05 15:15:01.585: ERROR/AndroidRuntime(23263):     at android.widget.ListView.addHeaderView(ListView.java:261) 
10-05 15:15:01.585: ERROR/AndroidRuntime(23263):     at android.widget.ListView.addHeaderView(ListView.java:284) 
10-05 15:15:01.585: ERROR/AndroidRuntime(23263):     at it.chiesacattolica.archive.ArchiveFragment.onActivityCreated(ArchiveFragment.java:199) 
10-05 15:15:01.585: ERROR/AndroidRuntime(23263):     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:858) 
10-05 15:15:01.585: ERROR/AndroidRuntime(23263):     at android.support.v4.app.FragmentManagerImpl.attachFragment(FragmentManager.java:1183)
应用程序崩溃了。我用于添加标题视图的代码如下:

@Override
public void onActivityCreated(Bundle arg0) {
    super.onActivityCreated(arg0);      
    getListView().setOnScrollListener(this);
    getListView().addHeaderView(searchBox);
    setListAdapter(mAdapter);
}

怎么了?提前感谢

我想这可能是您问题的答案,我不能肯定,因为您没有提供太多代码:


在快速查看android开发者参考资料之后,我猜在设置适配器之后,您不能再调用addHeaderView了。 如果存在这种情况,您可以卸载适配器,添加新的HeaderView并重新加载适配器。如果不是,则应在调用setAdapter方法之前添加所有HeaderViews


事实上,我做的事和那家伙一样suggests@blackbelt,认为值得一试,也许你可以给我们更多的代码看看?这就是你需要看的所有代码。。我最好的猜测是,你只看了文章的标题,而不是他提供的代码的答案,看起来他是在addHeaderView?clear之后调用setListAdapter的,BaseAdapter中不存在clear。我必须调用setListAdapter(null)@blackbelt Good,这样我可以为您指出正确的方向:)将adapter设置为null或清除其项不会解决异常。从我答案中的链接:>注意:首次引入时,只能在使用setAdapter(ListAdapter)设置适配器之前调用此方法。从KITKAT开始,可以随时调用此方法。因此,如果您使用最新的答案,这将不再是一个问题,希望这将对您有所帮助。。