簡體   English   中英

如何在Android中正確彈出片段?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM