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

时间:2011-10-05 13:25:52

标签: android android-fragments

我有两个由tabhost管理的ListFragments。我在标签之间切换的时间都很好。 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);
}

怎么了?提前谢谢

2 个答案:

答案 0 :(得分:7)

稍后看看android开发人员的参考资料,我猜你在设置适配器后无法再调用addHeaderView。 如果有这样的事情,您可以卸载适配器,添加新的HeaderView并重新加载适配器。如果没有,则应在调用setAdapter方法之前添加所有HeaderView。

请参阅ListView.addHeaderView

答案 1 :(得分:4)

我认为这可能是你问题的答案,我不能肯定地说,因为你没有提供很多代码:

Best place to addHeaderView in ListFragment