[英]Android Navigation Architecture component avoid Fragment recreation
我有以下流程,其中Fragment的內容是具有各種輸入字段的表單。
片段A - >片段B - >片段C - >片段D ......
例如,當用戶完全填充了Frag C並返回到Frag B時,所有Frag B數據都被存儲並保持完整,但是當向前移回C時,所有輸入數據都消失了。 想象一下同樣的場景,用戶填充片段A,B並且他已經填充了一半的Frag C字段,並且他選擇回到Frag A,當他導航回來時,所有輸入數據在之前的Frags上完好無損(B和A),但是一旦他決定向前移回C所在的位置,B和C的數據就會丟失,並在每一個新步驟中都被新的片段替換。 因此輸入數據僅在返回時保留(android后退按鈕),當他打開之前已經存在的Fragment時,會創建一個所有輸入為空的新片段。 每當用戶向后移動或在導航架構組件上向前移動時,是否可以將片段保持為唯一?
這不是一種停止片段娛樂的方法,但它可以解決您的問題。 創建一個活動范圍的ViewModel來保存表單數據,然后讓您的片段觀察此ViewModel。 ViewModel將比片段更長,因此當它們被重新創建時,它們將使用您先前存儲在ViewModel中的值。
將視圖保存在變量中並檢查是否為view!= 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
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.