Как остановить мигание фрагментов в представлении с вкладками при обновлении? - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть приложение, которое в первую очередь для просмотра документов.Документы отображаются в html WebView и могут быть размещены в виде вкладок, так что пользователь может провести влево / вправо, чтобы просмотреть документы на их текущей странице.

У пользователей есть возможность изменить размер текста иВнешний вид документов, которые они просматривают (ночной, светлый и в режиме сепия), так что в основном это более простая версия той же идеи, что и редактор Kindle.Параметры внешнего вида отображаются в виде всплывающего окна над текущим документом.Я хочу, чтобы они могли выбрать параметр и сразу увидеть изменение.

Поскольку мое приложение теперь , когда пользователь выбирает один из параметров внешнего вида, все фрагменты "обновлен "с использованием приведенного ниже кода.Все страницы в текущем действии успешно обновляются, так что я могу пролистывать между документами через представление с вкладками и видеть выбранное изменение во всех них. Проблема, с которой я столкнулся в моей реализации, заключается в том, что «обновление» вызвало «мигание» текущего фрагмента / действия.Я полагаю, что это связано с отсоединением, присоединением и последующей фиксацией фрагментов в текущей активности.

Ниже приведена моя реализация обновления ...

/***********************************************************************************************
 * Refreshes all the fragments (tabs) of the current Document activity.
 ***********************************************************************************************/
public void refreshAll()
{
    final FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    SparseArray<Fragment> fragmentSparseArray = adapter.getRegisteredFragment();

    for(int i = 0; i < fragmentSparseArray.size(); i++)
    {
        ft.detach(fragmentSparseArray.get(i));
        ft.attach(fragmentSparseArray.get(i));
    }

    ft.commit();
}

Вот что у меня естьпробовал ...

Я пытался заменить detach и attach на ...

ft.replace(R.id.htmlView, fragementSparceArray.get(i), "htmlView")

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

Я также пытался использовать overridePendingTransition (0,0) в ряде разных мест, включая ...

До и после ft.commit ()

overridePendingTransition(0,0);
ft.commit();
overridePendingTransition(0,0);

До и после отсоединения и прикрепления ...

overridePendingTransition(0,0);
ft.detach(fragmentSparseArray.get(i));
ft.attach(fragmentSparseArray.get(i));
overridePendingTransition(0,0);

И комбинация обоих ... Я также пытался применить ...

addToBackStack(null) 

после отсоединения и присоединения.

Последнее, что я пытался сделать, это добавить ...

android:animateLayoutChanges="false" 

к фрагменту и макетам ViewPager xml.

Нетиз них внесены какие-либо изменения.Мне будут интересны любые рекомендации!

Спасибо.

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