В настоящее время я использую в своем классе следующее решение, расширяющее 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
.
Например, сделайте это (если ваш NOT используетsupportpackage):
MyFragment myFragment = (MyFragment)
getFragmentManager().findFragmentByTag(tag);
if (myFragment == null) {
myFragment = MyFragment.newInstance();
getFragmentManager().beginTransaction().
add(myFragment, tag).commit();
}
Этот фрагмент будет создан только один раз, если, конечно, тег уникален для этого фрагмента.