簡體   English   中英

在片段之間傳遞數據並在屏幕方向更改時保存狀態

[英]Passing data between Fragments and saving state on Screen Orientation Change

在開始之前,我已經在線閱讀了thisthis和更多文章。 我仍然找不到正確的方法。

因此,我的應用程序中只有一個活動 ,有6個片段 第一個是ListFragment ,它從SQLite表加載列表。 當用戶點擊此列表中的一行時,我會做兩件事:

1)通過偵聽器從該行獲取一個int ,並將其傳遞回父活動,該活動使用簡單的setter方法將其存儲為類變量。
2)用另一個簡單的Fragment替換此ListFragment 這個新的Fragment在該類變量上使用了一個簡單的getter()來從另一個表中檢索一些信息,並向用戶顯示所有詳細信息。

到現在為止還挺好。 現在,如果我位於此詳細信息Fragment上,並且更改了屏幕方向,則不會重新加載活動狀態(因為我正在檢查onCreate()中的savedInstanceState是否為null ),但是,類變量會丟失其值,並且應用程序崩潰。

基本上,我試圖將數據從ListFragment傳遞到詳細信息Fragment。 我正在通過活動進行操作,這引起了問題。 根據Android文檔:

所有片段到片段的通信都是通過關聯的活動完成的。 兩個片段永遠不要直接通信。

沒有具體的代碼給我帶來麻煩,因此沒有發布任何代碼。

onSaveInstanceStateonRestoreInstanceState僅用於保存和恢復活動的每個實例狀態,以防您的活動被OS破壞(例如,釋放內存或在更改設備方向時重新創建它)。 因此,您可以將變量保存在onSaveInstanceState ,然后使用onRestoreInstanceState將其取回。

對於您的下一個問題,我認為本文會為您提供幫助。 吉恩(Gene)對此問題的回答也將為您提供幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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