2011-10-05 127 views
2

我有两个ListFragments由tabhost maganned。 Firt time我切换标签都没关系。 headerView被正确添加。第二次我切换片段之间我得到这个执行:ListFragment添加headerView给出java.lang.IllegalStateException:alled

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); 
} 

有什么不对?在此先感谢

+0

这里试试我的答案在http://stackoverflow.com/a/31181366/4489494希望这将有助于你.. –

回答

7

在转瞬即逝的样子后Android开发人员引用,我猜你不能在设置适配器后再次调用addHeaderView。 如果有这样的事情,您可以卸载适配器,添加新的HeaderView并重新加载适配器。如果不是,则应在调用setAdapter方法之前添加所有HeaderViews。

ListView.addHeaderView

+1

hwo您是否卸载了adpater? – Blackbelt

+0

从他提出的代码,看起来他是在addHeaderView之后调用setListAdapter? –

+1

adapter.clear() –

相关问题