我目前在我的类扩展中使用以下解决方案ListFragment
:
1)你,在你的类中onActivityCreated
检查你的适配器(这是一个类变量)是否为空,然后实例化它。然后,膨胀页脚,例如:
View footerView = View.inflate
(getActivity(), R.layout.list_footer_loader_view, null);
你只需要这样做一次!footerView 和适配器只需要创建一次。我在我的onActivityCreated
现在到“困难的部分”,在 onCreate 中设置你的片段,如下所示:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
我喜欢这样做,onCreate
因为它与活动无关。现在,setRetainInstance(true)
在活动被销毁后,您的片段将不会重新创建,例如屏幕方向之类的事件。
现在在这些行之后添加如下页脚:
getListView().addFooterView(footerView);
然后将适配器连接到列表:
setListAdapter(adapter);
每次活动结束时都应该这样做,在onActivityCreated
.
当涉及到片段时,您通常应该考虑的其他重要事情之一是,您不会在每次onCreate
调用活动时都创建片段。
例如这样做(如果您不使用支持包):
MyFragment myFragment = (MyFragment)
getFragmentManager().findFragmentByTag(tag);
if (myFragment == null) {
myFragment = MyFragment.newInstance();
getFragmentManager().beginTransaction().
add(myFragment, tag).commit();
}
如果标签对于该片段是唯一的,这只会创建一次片段。