[英]How to properly pop fragment in Android?
當前設置
+-> Activity1
| -> FragmentA
| -> FragmentB -+
| |
+- Activity2 <-------+
因此Activity1打開FragmentA,FragmentB打開Activity2。 然后當Activity2完成時,它返回到Activity1(沒有OnCreate
。只是OnActivityResult
)。
我想在去Activity2時殺死FragmentA和FragmentB,但是當我這樣做時,它們彈出得太快,所以我可以看到我的Activity1在Activity2出現之前分秒運行。
--- 我嘗試了什么 ---
我試圖用Activity2殺死碎片,但現在它太慢了,所以當我從Activity2回到1時,我可以看到碎片揮之不去。
目前只有工作解決方案將清除方法放入postDelayed
處理程序,但我不喜歡這個解決方案,因為你永遠不知道延遲多少就足夠了
---為什么不從Activity2中殺死它? ---
我試了一下希望,但是fragmentManager不允許我在不同的Activity中彈出backstack,因此拋出java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
。
有什么建議嗎?
謝謝!
我通過在Activity1a下移動這些片段來解決它
所以現在看起來像這樣
+-> Activity1 --------+
| |
| Activity1a <------+
| | -> FragmentA
| | -> FragmentB
| +-----------------------+
| |
+-- Activity2 <------------+
Activity1a現在是一個隱藏在FragmentA和B上的不可見活動。當我想轉換到Activity2時,現在我只需要從Activity1a中finish()
,然后連接到Activity1a的所有片段都將消失。
來自Android官方文檔: https : //developer.android.com/guide/components/fragments.html
片段必須始終嵌入到活動中,片段的生命周期直接受主機活動生命周期的影響。 例如,當活動暫停時,其中的所有片段也都會暫停,當活動被破壞時,所有片段也都會被破壞。
這解決了這個問題。 我只需要處理如何使用onBackPressed()
等角落案例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.