gpt4 book ai didi

android - 当 popbackstack 从 Fragment B 到 A 时保存 Fragment View(比如在 Activity 中完成)

转载 作者:行者123 更新时间:2023-11-29 18:34:41 24 4
gpt4 key购买 nike

我有两个 fragment FRAGMENT AFRAGMENT B。当我从 FRAGMENT A 转到 FRAGMENT B 时,我正在使用 addtobackstack(null) 在后台堆栈中添加 FRAGMENT A 并且使用 replace() 方法。问题是当我从 FRAGMENT B 调用 popbackstack() --> FRAGMENT A 然后 OnCreateView()onViewCreated() 再次调用并在 FRAGMENT A 中再次加载回收器 View 。我知道所有实例都不会再次加载但问题是我不想再次加载 View 。前任。在 Activity 中,当我调用完成时,之前的 Activity 与我们离开时保持相同。

注意 :我不想在 beginTransaction 中使用 add() 方法,因为它与其他 fragment 重叠。

谢谢

最佳答案

For reference:

One more importance difference between add and replace is: replace removes the existing fragment and adds a new fragment. This means when you press back button the fragment that got replaced will be created with its onCreateView being invoked. Whereas add retains the existing fragments and adds a new fragment that means existing fragment will be active and they wont be in 'paused' state hence when a back button is pressed onCreateView is not called for the existing fragment(the fragment which was there before new fragment was added). In terms of fragment's life cycle events onPause, onResume, onCreateView and other life cycle events will be invoked in case of replace but they wont be invoked in case of add.

简而言之,对于您的用例,您需要使用 add 并且如果您不希望 fragment View 重叠,那么您可以替换 Fragment B View 背景用纯色而不是透明的颜色。

另外不要忘记将 android:clickable="true" 添加到第二个 fragment 的父 View 中,这样它就可以捕获点击并且它们不会传播到下面的 fragment 。像这样:

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:focusable="true">

关于android - 当 popbackstack 从 Fragment B 到 A 时保存 Fragment View(比如在 Activity 中完成),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54722916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com