片段在彼此之上绘制

时间:2018-07-05 11:43:26

标签: android android-fragments android-fragmentactivity

情况是这样的...我单击一个加载下一个片段的按钮。当动画仍在播放时,我点击了最近使用的应用程序按钮。显示最近的应用程序屏幕后,我返回我的应用程序。

然后我看到两个片段相互重叠。仿佛Android忘记删除先前的片段。 我单击返回以删除所有片段,直到到达此FragmentActivity中加载的第一个片段。我记录了从FragmentManager获得的所有片段,并且只显示了一个。但是我仍然看到两个片段一个接一个地绘制。应该删除的一个不响应触摸事件,而另一个则应响应。

这是Android错误还是我的错?有什么办法可以解决这个问题或防止它发生?

并非每次都发生。这就是我加载片段的方式

public void loadNewFragment(AnimFragment newFragment, boolean addToSTack, boolean animate, String tag) {

    if (newFragment != null) {

        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

        transaction.setCustomAnimations(R.anim.fragment_enter_from_right, R.anim.fragment_exit_to_left, R.anim.fragment_enter_from_left, R.anim.fragment_exit_to_right);

        transaction.replace(R.id.fragment_container, newFragment, tag);

        if (addToSTack) {
            transaction.addToBackStack(tag);
        }

        int transactionId = transaction.commit();
        newFragment.setTransactionId(transactionId);
    }

}

然后按

将它们从背面取下

getSupportFragmentManager().popBackStackImmediate();

1 个答案:

答案 0 :(得分:0)

我认为“下面”的片段是onPause()状态,它仍然有效且可见。

尝试在前片段的根布局上使用白色背景,以避免显示以下片段。此外,前片段的根布局大小(宽度和高度)应为match_parent。

访问此网站以了解Fragment的生命周期。

android documentation