Как избежать инфляции макета каждый раз, когда транзакция фрагмента совершается?

Я использую фрагменты для оформления моего экрана.
Когда я возвращаюсь к другому фрагменту (из заднего стека), метод 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;
    }
}

Но практически все в порядке, что пейджер повторно раздувает представления, потому что он хранит в памяти только часть всех фрагментов. Итак, я думаю, что лучшая идея, чтобы это работало как надо

Другие вопросы по тегам