刷新时如何阻止选项卡式视图上的片段闪烁?

时间:2018-09-12 13:34:18

标签: android android-fragments webview

我有一个主要用于查看文档的应用程序。这些文档显示在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布局。

这些都没有进行任何更改。我会对任何建议感兴趣!

谢谢。

0 个答案:

没有答案