首页 > 解决方案 > 刷新时如何阻止选项卡式视图上的片段闪烁?

问题描述

我有主要用于查看文档的应用程序。文档显示在 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();
}

这是我尝试过的...

我试过用...替换分离和附加

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 布局。

这些都没有做出任何改变。我会对任何建议感兴趣!

谢谢你。

标签: androidandroid-fragmentswebview

解决方案


推荐阅读