Как избежать инфляции макета каждый раз, когда транзакция фрагмента совершается?
Я использую фрагменты для оформления моего экрана.
Когда я возвращаюсь к другому фрагменту (из заднего стека), метод onCreateView(...) вызывается каждый раз, даже если фрагмент уже создан.
Как избежать того, чтобы метод onCreateView(...) вызывался каждый раз, и чтобы он вызывался только один раз (при первом создании)?
1 ответ
Вы можете кэшировать свой завышенный вид в локальное поле, если хотите. Например:
public class ExampleFragment extends Fragment {
private View fragmentView;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
if (fragmentView == null) {
fragmentView = inflater.inflate(R.layout.you_super_view_id, container);
}
return fragmentView;
}
}
Но практически все в порядке, что пейджер повторно раздувает представления, потому что он хранит в памяти только часть всех фрагментов. Итак, я думаю, что лучшая идея, чтобы это работало как надо