Замена фрагмента не работает должным образом во время выполнения swipeRefresh

У меня есть фрагмент A, который включает SwipeRefresh и RecycleView. Когда пользователь щелкает элемент в RecycleView, я заменяю новый фрагмент B:

mAdapter.setOnItemClickListener(new MyAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {

                Item tem = mItems.get(position);
                // selected item
                Log.i(TAG, item.getTitle() + " clicked. Replacing fragment.");

                // We start the fragment transaction here. It is just an ordinary fragment transaction.
                getActivity().getSupportFragmentManager()
                        .beginTransaction()
                        .replace(R.id.content_fragment,
                                FragmentB.newInstance(item,
                                        (int) view.getX(), (int) view.getY(),
                                        view.getWidth(), view.getHeight())
                        )
                                // We push the fragment transaction to back stack. User can go back to the
                                // previous fragment by pressing back button.
                        .addToBackStack("detail")
                        .commit();
            }
        });

Существует проблема :

Когда я начинаю обновлять с помощью SwipeRefresh, а он все еще работает, я нажимаю на элемент (как вы можете видеть код выше), фрагмент B будет заменен under фрагментом A на экране. Я вижу фрагмент B под своим RecycleView во фрагменте A! Я больше не могу прокручивать в recycleView, поскольку onStop() вызывается во фрагменте A, а onCreateView вызывается во фрагменте B.

Что может быть причиной? у вас есть обходной путь?

Дополнение: сбой также можно воспроизвести в образце Google:

https://github.com/googlesamples/android-FragmentTransition/


person Ali    schedule 25.03.2015    source источник
comment
Попробуйте это, пожалуйста: stackoverflow.com/a/29251199/4693713 надеюсь, что это поможет вам.   -  person Avishek Das    schedule 25.03.2015
comment
В чем разница с моим кодом? :)   -  person Ali    schedule 25.03.2015
comment
Не используйте addToBackStack, может быть, он сработает ..   -  person Avishek Das    schedule 25.03.2015
comment
Это то, что я хотел иметь. Вы знаете, что это? почему ты это предлагаешь?   -  person Ali    schedule 25.03.2015
comment
Это поместит ваш предыдущий фрагмент в заднюю стопку ..   -  person Avishek Das    schedule 25.03.2015


Ответы (2)


Это ошибка. Google может скоро это исправить.

Проблема 78062

person Michel Fortes    schedule 15.11.2015

Я встретил тот же вопрос, и я даже не использовал addToBackStack, сначала я думаю, что фрагмент не был заменен, но я запускаю новый поток и пытаюсь найти старый фрагмент с помощью fragmentmanager и обнаруживаю, что он был заменен.

По совпадению я обнаружил, что если вы установитеTransition () для транзакции, и она будет работать правильно, возможно, вам поможет анимация перехода.

person cajsaiko    schedule 13.04.2015
comment
Извините, но я думаю, что это не совсем так, я обнаружил другую проблему, см. Комментарий к этой ссылке - person cajsaiko; 23.04.2015