我有以下流程,其中Fragment的内容是具有各种输入字段的表单。
片段A->片段B->片段C->片段D ...
例如,当用户完全填充Frag C并移回Frag B时,所有Frag B数据都存储并保持不变,但是当移回C时,所有输入数据都消失了。 想象一下相同的场景,用户填充了Frag A,B,并且他已经填充了Frag C字段的一半,并且当他导航回先前的Frags(B和B上的所有输入数据)时,他选择返回FragA。 A),但是一旦他决定返回他所在的C,B和C中的数据就会丢失,并在每个新步骤中都将其替换为新的片段。 因此,仅当返回时才保留输入数据(android后退按钮),当他打开之前曾去过的Fragment时,会创建一个新的Fragment,所有输入均为空白。 每当用户在导航体系结构组件上向后移动或向前移动时,是否可以将片段保持为唯一?
答案 0 :(得分:0)
这不是停止片段重新播放的方法,但是可以解决您的问题。创建一个活动范围的ViewModel来保存表单数据,然后让您的片段观察此ViewModel。 ViewModel的寿命将超过这些片段,因此在重新创建它们时,它们将使用您先前存储在ViewModel中的值。
答案 1 :(得分:0)
将视图保存到变量中,然后检查视图!= null然后充气
private var mView: View? = null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
return if(mView == null) {
val v = inflater.inflate(R.layout.chat_fragment, container, false)
initializeView(v)
mView = v
v
}else{
mView
}
}