Лучший способ поменять фрагменты - PullRequest
0 голосов
/ 05 апреля 2019

Как мы можем идеально переключаться между фрагментами без воссоздания. Я использую приведенный ниже код для переключения ч / б двух фрагментов. В первом фрагменте я реализовал фид-посты, используя http-запрос в onViewCreated () фрагментов. И у меня есть второй фрагмент с некоторыми другими параметрами. Но когда я переключаюсь на первый фрагмент со второго ... httpRequest руководителей снова и дублирует
Подача элементов. Но когда я переключаюсь на второй фрагмент с первого, это не происходит. Я использую это как

FragmentUtils.changeFragment (fragHome, R.id.mobile_container, правда, (AppCompatActivity) getActivity ());

public static void changeFragment(Fragment frag,int v, boolean saveInBackstack,AppCompatActivity a) {
        String backStateName = ((Object) frag).getClass().getName();

        try {
            FragmentManager manager = a.getSupportFragmentManager();

            boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0);

            if (!fragmentPopped && manager.findFragmentByTag(backStateName) == null) { 

                FragmentTransaction transaction = manager.beginTransaction();



                transaction.replace(v, frag, backStateName);

                if (saveInBackstack) {
                    Log.d(TAG, "Change Fragment: addToBackTack " + backStateName);
                    transaction.addToBackStack(backStateName);
                } else {
                    Log.d(TAG, "Change Fragment: NO addToBackTack");
                }

                transaction.commit();
            } else {
                // custom effect if fragment is already instanciated
            }
        } catch (IllegalStateException exception) {
            Log.w(TAG, "Unable to commit fragment, could be activity as been killed in background. " + exception.toString());
        }
    }

1 Ответ

0 голосов
/ 05 апреля 2019

Вы можете сохранить свой HTTP-ответ как переменную-член и выполнять ваш HTTP-запрос только в onViewCreated, если он равен нулю '

private String httpResponse;

public void onViewCreated (View view, Bundle savedInstanceState) {

    if (httpResponse == null) {

        // make HTTP request here
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...