У меня есть приложение, которое в первую очередь для просмотра документов.Документы отображаются в 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.
Нетиз них внесены какие-либо изменения.Мне будут интересны любые рекомендации!
Спасибо.